[Haskell-beginners] state monad
lbolla at gmail.com
Sun Apr 22 10:56:33 CEST 2012
I believe that the type constructor for State is now lowercase: "state"
type Stack = [Int]
pop :: State Stack Int
pop = state $ \(x:xs) -> (x,xs)
push :: Int -> State Stack ()
push a = state $ \xs -> ((),a:xs)
play = do
main = print $ runState play 
On Sun, Apr 22, 2012 at 01:40:17AM -0700, Paul Higham wrote:
> I am trying to come to grips with the state monad and as a starting point I copied the some code directly from the book Learn You a Haskell for Great Good then added the type synonym for Stack
> import Control.Monad.State
> type Stack = [Int]
> pop :: State Stack Int
> pop = State $ \(x:xs) -> (x,xs)
> push :: Int -> State Stack ()
> push a = State $ \xs -> ((),a:xs)
> However, attempting to load this into ghci produces the errors
> stackPlay.hs:6:7: Not in scope: data constructor `State'
> stackPlay.hs:9:10: Not in scope: data constructor `State'
> Please excuse the cognitive deficit, but I cannot figure out why this should not work as advertised.
> Beginners mailing list
> Beginners at haskell.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 490 bytes
Desc: not available
More information about the Beginners