-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sean/mandatory kinds #35
Conversation
…HaP, added basic nix shell with build deps & locale config, placeholder UPLC codegen module & functions. You almost certainly need the hie.yaml and .envrc to work on this so I committed those intentionally.
…n the annotation) + reworked pretty printer to... print prettily
… this as a temporary work branch)
…e expressions, necessary for fully typing the desugared typeclass declarations
…gly CoreFn desugaring code
…s-wip Sean/typed core fn.typeclasses wip
…Unknowns, small tweak to pretty printer
Sean/typed core fn.wip
…instantiatePolyTypes
…g dictionary types, (sort of) fixed let-generalization, ported over more tests
…inery. (We're now properly *reconstructing* the types)
…eed to distinguish between free and bound tyvars and only require annotations only in tyvar binders & free tyvars
… & small mistakes in the CST conversion rewrite
C.Function -> Left $ "function types should be caught in apps" | ||
C.Array -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniProtoList) -- is this wrong? do we want a SOP list? too tired to know | ||
C.String -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniString) | ||
C.Char -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniInteger) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does UPLC have primitives for working with Char? unicode codepoint <-> symbol stuff? It might be a good idea to remove Char completely
C.String -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniString) | ||
C.Char -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniInteger) | ||
C.Int -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniInteger) | ||
C.Boolean -> pure $ TyBuiltin () (PLC.SomeTypeIn PLC.DefaultUniBool) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's remove Boolean
This PR contains changes to the ASTs (everything after the CST) and CST->AST conversion functions which ensure that all type variables are explicitly kinded. That is: Type variables used to be
And now they are:
This also includes Vladimir's changes to the parser that make kind annotations mandatory at binding sites and change the syntax for Rows, such that Rows are now written with brackets:
(This was needed to disambiguate singleton rows from type variables with kind annotations. E.g.
(a :: Int)
was ambiguous before the change.)Checklist: