Is there any reason why the list type is defined in the Report as data [a] = [] | a : [a] deriving (Eq, Ord) rather than data [a] = [] | (:) {head:: a, tail:: [a]} deriving (Eq, Ord) (which would shorten Prelude.List somewhat)? -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk 31 Chalmers Road jf@cl.cam.ac.uk Cambridge CB1 3SZ +44 1223 570179 (after 14:00 only, please!)