
Mike Ledger
writes: It seems to me that this is Identity given a different name. A bonus of using Identity is that it won't introduce any new packages to the majority of installations.
On 20/08/2013 1:17 PM, "Ivan Lazar Miljenovic" wrote: ... isn't a single element tuple isomorphic to just that element ...?
So if I have instances (as I do) like:
instance C (a, b) ... instance C () ...
I can't usefully put either of these next two, because they're equiv to the third:
instance C (( a )) ... instance C ( a ) ... instance C a ... -- overlaps every instance
Similarly for patterns and expressions, the so-called superfluous
Hi Mike, and Ivan, I'm not sure you're 'getting' it. A one-element tuple distinguishes at type level between a container vs contents. It's not identity/not isomorphic. Try those instances I gave. (What's worse, `Identity` is no fewer chars than `OneTuple` ;-) If your application is not working with tuples/"for general usage", then no need to "introduce any new packages". You won't want OneTuple's (or whatever they're called). Since I am working with tuples, I want the code to be clear where it's dealing with tuples vs the Haskell type infrastructure. Thanks Ivan for the dependencies list. No surprise that Hlist is using OneTuple <==> HCons a HNil. That need is exactly what I'm talking about, not a joke. Lennart's `tuple` package likewise (but no use to me because it's using positional access, not Type-Indexed). AntC parens
are just stripped away, so equivalent to the bare term.