[Haskell-beginners] Type of function or type of the output of function?

Matthew Moppett matthewmoppett at gmail.com
Sat Dec 8 11:02:15 CET 2012


As Divyanshu said, (Num a, Ord a) => [a] is the type of a value, not of a
function.

[a] just means "A list of values having some type (could be anything,
really)".
(Num a, Ord a) => means "Whatever type *a* has, that type is a member of
the Num typeclass and of the Ord typeclass" -- these are called type
constraints.

*a* has to be a member of the Ord typeclass (the class of types that can be
compared in value -- either equal, smaller than, or less than) because
you've used a function like (<=) or (>) in your quicksort function that
makes those sorts of comparisons.

*a* has to be a member of the Num typeclass because you've used number
literals in your list. These could be Ints, Integers, Floats... but ghci
has no way of knowing which one.

If you do this:
>let a = 3 :: Int
>:t quicksort [a,2,1,-10]

You'll get back this result:
quicksort [a,2,1,-10] :: [Int]

In this case ghci now knows your talking about a specific type (Int), so it
doesn't need to specify type constraints.





On Sat, Dec 8, 2012 at 8:11 PM, Trung Quang Nguyen <trungnq97 at gmail.com>wrote:

> Hi there,
>
> I have a quickSort implementation, then I try to use :t in ghci to inspect
> what type I receive. I got this.
>
> *Main> :t quickSort "Hello the world"
> quickSort "Hello the world" :: [Char]
> *Main> :t quickSort [3,2, 1,-10]
> quickSort [3,2, 1,-10] :: (Num a, Ord a) => [a]
>
> The first one looks like :t return type of output of quickSort [Char]
>
> The second one looks like :t return the type of function (Num a, Ord a) =>
> [a]
>
> Anybody know why this happens? When we will receive type of output, or
> type of function? And why (Num a, Ord a) => [a], even quickSort doesn't
> have explicit type, so this type comes from input type and type of function
> is defined in runtime?
>
> Thanks a lot!
>
> Cheers,
> Trung
>
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20121208/e64bae42/attachment.htm>


More information about the Beginners mailing list