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.)