I've been thinking about it for a while and the special TupleT constructor still seems pretty useful. However, I think it should only be kept if there's a way to guarantee that reify is consistent with the definition of Type (i.e. it should alwa produce TupleT and not "ConT ''(,,,)" and friends ) Furthermore I would find it more appropiate to split Type into Constructors and Types themselves (just like it happens in Data.Typeable and Language.Haskell.Syntax) data Cons = Cons Name | SpecialCons data SpecialCons = Arrow | Tuple Int | List data Type = ForallT [Name] Cxt Type | VarT ConT Cons | AppT Type Type On 11/2/07, Alfonso Acosta <alfonso.acosta@gmail.com> wrote:
On 11/2/07, Simon Peyton-Jones <simonpj@microsoft.com> wrote:
I agree. As in: I would not be opposed to removing it. But we'd just need to be sure there was a convenient way of conjuring up the appropriate data constructor for an n-tuple.
TH.Syntax already provides:
tupleTypeName :: Int -> Name tupleDataName :: Int -> Name
IMHO, that should be enough