On 2009 Jan 5, at 15:40, Paul Johnston wrote:

> Hi, I was playing around after getting the new O'Reilly book with

> lists and their operators!

> Not sure what the below actually means?

>

> Prelude> [] : []

> [[]]

> it :: [[a]]

>

> (Got :set +t on )

>

> I thought the first argument of ':' must be an element, so is the

> empty list an element of the same type of the contents of the empty

> list?

(:) :: a -> [a] -> [a]

In this case the first argument is an empty list (type forall a. [a])

and the second must therefore be an empty list of lists (type forall

a. [[a]]). Hence the result is also of type forall a. [[a]] (with all

the `a's unified).

--

brandon s. allbery [solaris,freebsd,perl,pugs,haskell]

[hidden email]
system administrator [openafs,heimdal,too many hats]

[hidden email]
electrical and computer engineering, carnegie mellon university KF8NH