broom-lang / broom

A programming language with first-class modules and algebraic effects.
https://broom.readthedocs.io
BSD 3-Clause "New" or "Revised" License
10 stars 1 forks source link

Clarify (and extend) record (type) constructs' syntax and implementations #32

Closed nilern closed 4 years ago

nilern commented 5 years ago

Empty, extension (with), update (where), restriction (without) for records, modules, record types, interfaces. Also field access and patterns for records and modules.

nilern commented 5 years ago

What about 'hiding' e.g. {module type of module type t = int end hiding t} = interface type t end?

nilern commented 5 years ago

And should we deal in rows inside record type as in row polymorphism forall (r: row) a b . (a -> b) -> {r with x : a} -> {r with x : b}?

nilern commented 5 years ago

What about 'hiding' e.g. {module type of module type t = int end hiding t} = interface type t end?

Cannot do that properly in a model where type abbreviations are just 'macroexpanded'.