I'm working my way through Real World Haskell and am in Chapter 3. On page 56 there is a discussion called "Record Syntax" and it gives this data constructor:
data Customer = Customer {
customerID :: CustomerID
, customerName :: String
, customerAddress :: Address
} deriving (Show)
where CustomerID and Address were defined (and loaded) before. But when I try to put in data, I get these errors
*Main> :load BookStore.hs
[1 of 1] Compiling Main ( BookStore.hs, interpreted )
Ok, modules loaded: Main.
*Main> customer1 = Customer 271828 "J.R. Hacker"
["255 Syntax Ct",
"Milpitas, CA 95134",
"USA"]
<interactive>:1:11: parse error on input `='
*Main>
<interactive>:1:18: parse error (possibly incorrect indentation)
*Main>
<interactive>:1:21: parse error on input `,'
*Main>
<interactive>:1:6: parse error on input `]'
*Main>
If I put the whole data add on one line, I still get
*Main> customer1 = Customer 271828 "J.R. Hacker" ["255 Syntax Ct", "Milpitas, CA 95134", "USA"]
<interactive>:1:11: parse error on input `='
*Main>
I'm on Ubuntu 11.10, using Emacs23, haskell-mode, running 7.0.4. Any ideas what's going wrong? The book gives this alternate version:
data Customer = Customer Int String [String]
deriving (Show)
customerID :: Customer -> Int
customerID (Customer id _ _) = id
customerName :: Customer -> String
customerName (Customer _ name _) = name
customerAddress :: Customer -> [String]
customerAddress (Customer _ _ address) = address
...but it produces the same errors.
Olwe