Monad V S Continuation (not finish)

!i have read 1 paper which describe the difference between two method.

在看完http://www.defmacro.org/ramblings/fp.html
這篇文章後,他裡面提到Continuations,剛好我學過Monad,覺得這兩個概念有點相似,都是為了解決Sequence而產生的,只是monad是以接受前一個動作的結果,來執行現在的動作,但是continuation卻是接受未來的動作,然後在做完當前動作後,在執行未來的動作。
Ex: for sequence

int t=foo(5);
if(t) then act1 else act2
  • Continuation passing style: we need to have one more argument which is the function that represents "what to do next".
\act1 -> \act2 -> if t then act1 else act2
    where t = foo 5
  • Monad: the argument is the result of the previous computation.
(foo 5) >>= (\result -> if result then act1 else act2)

References:
http://en.wikibooks.org/wiki/Haskell/Continuation_passing_style
http://en.wikipedia.org/wiki/Monad_%28functional_programming%29

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License