
Hello again, in fact I wrote the following state monad: -- newtype State state value = State (state -> (state, value)) instance Monad (State state) where return v = State $ \s -> (s, v) State f >>= k = State $ \s -> let (s0, v0) = f s State g = k v0 in g s0 push a = State $ \s -> (a:s, a) prog= do {push 100 ; push 1} execute (State program) = fst (program []) -- but I never use value, so is there a way not to write it in the monad definition? Sam. Sam G. wrote:
I need a Monad to represent an internal stack. I mean I've got a lot of functions which operates on lists and I would not like to pass the list as an argument everytime.
Could you help me writing this monad? To start, I just need a + function which will return the sum of the 2 toppest elements of the stack.
Thanks in advance, Sam.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe