
I created a file with the dividedBy example from Chapter 8.5 of "Haskell Programming from first principles" : dividedBy :: Integral a => a -> a -> (a, a) dividedBy num denom = go num denom 0 where go n d count | n < d = (count, n) | otherwise = go (n - d) d (count + 1) I get the following error when I load into ghci: $ ghci chapter8_5-IntegralDivision.hs GHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/wink/.ghci [1 of 1] Compiling Main ( chapter8_5-IntegralDivision.hs, interpreted ) chapter8_5-IntegralDivision.hs:4:7: error: parse error (possibly incorrect indentation or mismatched brackets) | 4 | | n < d = (count, n) | ^ Failed, 0 modules loaded. λ> But if I put the "go" function on its own line: dividedBy :: Integral a => a -> a -> (a, a) dividedBy num denom = go num denom 0 where go n d count | n < d = (count, n) | otherwise = go (n - d) d (count + 1) It does compile: $ ghci chapter8_5-IntegralDivision.hs GHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/wink/.ghci [1 of 1] Compiling IntegralDivision ( chapter8_5-IntegralDivision.hs, interpreted ) Ok, 1 module loaded. Or I can put the "where" on the previous line: dividedBy :: Integral a => a -> a -> (a, a) dividedBy num denom = go num denom 0 where go n d count | n < d = (count, n) | otherwise = go (n - d) d (count + 1) it also compiles: $ ghci chapter8_5-IntegralDivision.hs GHCi, version 8.2.1: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/wink/.ghci [1 of 1] Compiling Main ( chapter8_5-IntegralDivision.hs, interpreted ) Ok, 1 module loaded. λ> Can someone shed light on what I've done wrong? -- Wink