
On Thu, Mar 15, 2012 at 00:28, Olwe Melwasul
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"
You cannot create a binding that way in ghci; you need to use a "let", or for monadic bindings "<-". (Think of the ghci prompt as being inside a big "do" block, although in more recent versions of GHC there are various top level things that will work.) *Mail> let customer1 = Customer 271828 "J. R. Hacker." ["255 Syntax Ct", "Milpitas, CA 95134", "USA"] Note the "let". (Summary: ghci is not the top level of a source file. I'm surprised you didn't get an error if you tried to do the data declaration in your other example, unless you were using 7.4.1 where "data" works but a binding without "let" or "<-" still does not.) -- brandon s allbery allbery.b@gmail.com wandering unix systems administrator (available) (412) 475-9364 vm/sms