Re: [Haskell-cafe] Newbie Q: GHCi: Where “List” module is imported from?

Jules Bean jules at jellybean.co.uk
Fri Feb 16 11:59:36 EST 2007


Dmitri O.Kondratiev wrote:
> "Set" module here is built with list and uses among other things list 
> comparison functions such as (==) and (<=).
>
>  
> Q1:  Where "List" module is imported from?
>
> GHC "Base" package contains "Data.List" module, not just "List" module.
>

List was the old name for it. Data.List is the new name.
>
> Besides,  "Data.List" does not have (<=) function.
>

Actually, lists are partly defined in the Prelude, with auxiliary 
functions in Data.List. In particular, <= for List is defined in the 
Prelude. Or rather, I should say, the Ord instance for lists is defined 
in the prelude (and only if the type inside the lists is itself an Ord 
instance). Look:

Prelude> [1,2] <= [3,4]
True

(Lists of ints have the lexicographic ordering based on the standard 
ordering on integers)


Prelude> [id] <= [id]

<interactive>:1:5:
    No instance for (Ord (a -> a))
      arising from use of `<=' at <interactive>:1:5-6


(Lists-of-functions aren't Ordered, because functions aren't Ordered)

Jules



More information about the Haskell-Cafe mailing list