[Ur] The future of [class] declarations
adamc at impredicative.com
Thu Jul 26 09:00:40 EDT 2012
The type class machinery of Ur/Web is a bit unsatisfying at the moment.
There is a [class] declaration form, which is able to add new type
classes locally, and one can even declare new instances (properly typed
[val] declarations) shortly afterward and get them added to an internal
database. However, these instances generally won't be picked up for
automatic resolution within the current module, because the type checker
tries to "help" and expand out type class definitions, so that it's no
longer obvious one is working with a particular type class.
So, one alternative would be this: Remove [class] declarations but keep
[class] signature items. This means type classes would only be a
concept in the module system. Automatic resolution would only happen
for a type class hidden behind opaque signature ascription of a module,
though instances could then be declared elsewhere in the current way.
This is actually pretty close to what is de facto implemented right now,
so perhaps the [class] declaration is just a distraction.
More information about the Ur