Skip to content
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

Set-theoretic types: type definitions #13881

Open
13 tasks
josevalim opened this issue Oct 6, 2024 · 0 comments
Open
13 tasks

Set-theoretic types: type definitions #13881

josevalim opened this issue Oct 6, 2024 · 0 comments

Comments

@josevalim
Copy link
Member

josevalim commented Oct 6, 2024

This refers to second and third milestones of Elixir's type system. It is a continuation of #13227 and can only be started once that is completed.

New constructs and APIs will be added to Elixir:

  • Define a construct for typed structs (field documentation, parametric definitions, private fields, deprecate empty structs)
  • Define a construct for type aliases
  • Define a construct for type signatures
  • Define a construct for typed behaviours
  • Define a construct for typed protocols and implementations (parametric protocols)
  • Define a construct for Erlang FFI

Implementation:

  • Module-local inference of private functions based on callers
  • Occurrence typing via reverse arrows
  • Strong arrows

At the descr-level, we need to support:

  • Recursive types
  • Parametric polymorphism and anonymous function call inlining
  • Row polymorphism
  • Behaviours
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

1 participant