
Brent Yorgey
writes: data Oneple a = Oneple a -- (or newtype) (Oneple $ CustId 47) -- too verbose
This is what the OneTuple package is for:
Thank you Brent, and Ivan made the same suggestion. Apart from being more verbose (2 extra chars) than the approach I disliked as being too verbose, does OneTuple have any merit?
Dan Burton danburton.email at gmail.com Fri Aug 16 03:04:14 UTC 2013 claims that "T(CustId 47) is just one character off from what you actually want ..."
(Bare T is very likely to be used already.) But not only do I want to construct Oneples, I also want to pattern match and discriminate on their type in instances: f (T(CustId x)) = ... instance C (Oneple (CustId Int)) ... I'm sensing there must be a need (since OneTuple is claimed to be a solution for it). Would double-parens be too wild an idea?: ... ((CustId 47)) `extend` (CustName "Fred", Gender Male) f ((CustId x)) = ... instance C ((CustId Int)) ... We'd have to avoid the double parens as in: ((meth obj) (double x))