| Can we have extensional products and functions (or at least the means
| to define them) please?

Does anyone want to come up with a concrete language proposal?

Language issues
~~~~~~~~~~~~~~~
A significant difficulty is that seq is essentially un-implementable
for unlifted products (requires parallelism).  Ditto functions.
Whether or not you think it was a mistake to make seq polymorphic,
that's the way H98 is.

Implementation issues
~~~~~~~~~~~~~~~~~~~~~
If your program has no seqs then unlifted products effectively
means 'add a twiddle to every pattern match'.  This is rather
easy to implement.  For functions, it means treating bottom
a bit differently.  For example, eta reduction is always valid for a 
unlifted function but not necessarily valid for a lifted one.
It wouldn't be that easy to make GHC have two function types,
since they pervade the compiler.

Simon

Reply via email to