
3 Mar
2005
3 Mar
'05
3:12 a.m.
On Thu, 3 Mar 2005, 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.
I wrote one which is at, http://www.aetion.com/src/Stack.hs http://www.aetion.com/src/StackM.hs Then, add :: Num a => Stack a () add = do x <- pop y <- pop push (x + y) or whatever. Of course, if you use Control.Monad.State where you store the stack as a list then you can probably just do something like, add = (x:y:z) <- get put ((x+y):z) I hope that helps. -- Mark