| 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