[Haskell-beginners] state monad
Lorenzo Bolla
lbolla at gmail.com
Sun Apr 22 10:56:33 CEST 2012
I believe that the type constructor for State is now lowercase: "state"
not "State".
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)
play = do
push 1
push 2
push 3
pop
main = print $ runState play []
L.
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.
>
> ::paul
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
--
Lorenzo Bolla
http://lbolla.info
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/beginners/attachments/20120422/7a59f8f2/attachment.pgp>
More information about the Beginners
mailing list