[Haskell-beginners] StateT, list monad
Michael Mossey
mpm at alumni.caltech.edu
Wed Sep 23 18:03:03 EDT 2009
Trying to understand Douglas Auclair's article
"MonadPlus - What a super monad!" here
<http://www.haskell.org/sitewiki/images/6/6a/TMR-Issue11.pdf>
Defines
splits :: Eq a => [a] -> [(a,[a])]
splits list = do x <- list
return (x, delete x list)
choose :: Eq a => StateT [a] [] a
choose = StateT (\s -> splits s)
I'm trying to understand what "StateT [a] [] a" means:
I wrote
t1 :: StateT [Int] [] [Int]
t1 = do
s <- get
return s
That compiles. Then I tried to write
t2 :: StateT [Int] [] [Int]
t2 = do
x <- [1,2,3]
s <- get
return (x:s)
I thought this would be fine because [1,2,3] is an example of a list monad.
But I get
"Can't match expected type StateT [Int] [] t
against inferred type [a]"
More information about the Beginners
mailing list