[Haskell-cafe] Confused about missing data constructor
Adam Miezianko
adam at theorylounge.org
Tue Nov 23 19:58:45 EST 2010
I'm working through Learn You a Haskell for Great Good [1] and getting
a compiler error while playing around with some of the code. I have
this:
-- BEGIN state.hs
import Control.Monad.State
type Stack = [Int]
pop :: State Stack Int
pop = State $ \(x:xs) -> (x,xs)
push :: Int -> State Stack ()
push x = State $ \xs -> ((), x:xs)
stackManip :: State Stack Int
stackManip = do
push 3
pop
pop
-- END state.hs
But when I try to load it into ghci I get the following errors:
Prelude> :load "/home/admi/.pe/state.hs"
[1 of 1] Compiling Main ( /home/admi/.pe/state.hs, interpreted )
/home/admi/.pe/state.hs:6:6: Not in scope: data constructor `State'
/home/admi/.pe/state.hs:9:9: Not in scope: data constructor `State'
Failed, modules loaded: none.
Prelude>
Now, I'm not exactly sure how to read the documentation for
Control.Monad.State [2] but it seems that newtype State s a = State
{...} defines a constructor, or am I wrong on that point too? So,
what am I missing here? In case it matters, I am using mtl-2.0.1.0
and ghci 6.12.3.
[1] http://learnyouahaskell.com/for-a-few-monads-more
[2] http://cvs.haskell.org/Hugs/pages/libraries/mtl/Control-Monad-State.html
--
Adam Miezianko
More information about the Haskell-Cafe
mailing list