Ron de Bruijn wrote:
I would even prefer to have everything which can be be derived to be
automatically there unless a manual instance is specified.
So,
I would like that
datatype Foo a = Foo of a
val y = show (Foo 1)
compiles and does what is obviously intended unless another Foo
specific show instance has been defined.
Again, this strikes me as much less of an issue in practice than in
theory. There is a real cost in language semantics complexity to adding
such functionality, and it doesn't seem hard to get by without. Also
again, I would consider a patch adding this functionality.
Completely unrelated: opalang.org doesn't appear to have actual
datatypes. Or rather they have disjoint sums of record types to make
the language more uniform. Is there any particular reason that this
isn't done in Ur/Web? It seems that their approach is more sensible in
a language with row variables.
Ur/Web supports this, too, with the [variant] type family. You could
even get recursive variants with shallow use of single-constructor
datatypes. So, you can choose which version you want! You'll generally
get better error messages with a built-in datatype mechanism. Built-in
pattern-matching notation is generally more fun to work with.
_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur