[Haskell-beginners] Type Class Instance Question

Philippe Sismondi psismondi at arqux.com
Fri Feb 21 05:39:21 UTC 2014


Oh, cool, thanks. That clears it up.

I mean, I knew of course that "a -> b" means a function from type a to type b. What I was forgetting is that (->) is a type constructor of kind *->*->*, so an instance declaration could consistently treat (a -> b) as a concrete type like any other.

My thinking is still often contaminated with my pre-Haskell intuitions sometimes. I sometimes revert to thinking of data and functions as being from two different universes. I wonder if I'll ever get over that, or of being a perpetual FP noob. Sigh.

Thanks again.

- Phil -


On 2014-02-21, at 12:02 AM, Michael Orlitzky <michael at orlitzky.com> wrote:

> On 02/20/2014 11:48 PM, Philippe Sismondi wrote:
>> In the Haskell 98 and 2010 reports it states that one may declare
>> something of the form /(tyvar1 -> tyvar2)/ to be an instance of a type
>> class. Is that a function or what is it? Can anyone point me to an
>> example of this?
> 
> It refers to something like (a -> b) which is the type of functions from
> 'a' to 'b' (tyvar1 and tyvar2 in the report). Here's a
> not-terribly-useful example of such an instance:
> 
>  instance Show (a -> b) where
>    show f = "some kinda function"
> 
>  main = print foldl
> 
> A better example could make those functions an instance of Num, so that
> you could write f + g to represent f(x) + g(x), f * g for f(x) * g(x),
> and so on.
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners



More information about the Beginners mailing list