-------- Forwarded Message -------- Subject: Re: [Haskell-beginners] Multiple letters between -> -> Date: Sat, 25 Nov 2017 13:05:25 +0100 From: Marcus Manning <iconsize@gmail.com> To: Francesco Ariis <fa-ml@ariis.it> Sorry, for the long break. Thanks for replying. I do not believe that h is a higher kinded type. What I want to express is that a function f could take a type constructor as argument and simply returns it, but f Maybe throws an Error <interactive>:13:3: error: • Data constructor not in scope: Maybe :: h a • Perhaps you meant variable ‘maybe’ (imported from Prelude) So what instead does h a mean in a function declaration? Cheers, Marcus. On 11/23/2017 06:27 PM, Francesco Ariis wrote:
On Thu, Nov 23, 2017 at 06:19:51PM +0100, Marcus Manning wrote:
Hi,
Original I thought a Signature like:
f :: h a -> h a
means that h is a higher kinded type just like in Type Classes ( for instance f in Functor f).
But I heard such a meaning is not allowed in normal Haskell functions. What instead is the meaning of h a? Hello Marcus, you can write that but, since we know nothing about `h` and `a`, the only possible (non-undefined) function to implement that signature is:
f :: h a -> h a f = id
Any other implementation would require us to know something about h, hence a typeclass-constraint (e.g. Functor h =>) on h. _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners