This code was automatically extracted from a .lhs file that uses the following convention: -- lines beginning with ">" are executable -- lines beginning with "<" are in the text, but not necessarily executable -- lines beginning with "|" are also in the text, but are often just expressions or code fragments. > data Char = 'a' | 'b' | 'c' | ... -- This is not valid > | 'A' | 'B' | 'C' | ... -- Haskell code! > | '1' | '2' | '3' | ... > data Char = Ca | Cb | Cc | ... > | CA | CB | CC | ... > | C1 | C2 | C3 | ... > -- more pseudo-code: > data Int = (-2^29) | ... | -1 | 0 | 1 | ... | (2^29-1) > data Integer = ... -2 | -1 | 0 | 1 | 2 ... > data () = () -- more pseudo-code > data (a,b) = (a,b) -- more pseudo-code > data (a,b,c) = (a,b,c) > data (a,b,c,d) = (a,b,c,d) > data [a] = [] | a : [a] -- more pseudo-code > infixr 5 :