On Thu, Nov 30, 2017 at 12:55:07PM +0100, Marcus Manning wrote: > But Either is not (*->*)->*, instead it is *->(*->*). Is (*->*)->* > expressable in Haskell functions? Yes, with an appropriate data declaration: λ> data FooType a = FooCons (a Int) λ> :k FooType FooType :: (* -> *) -> *