関数型プログラミングは初めてです。モナドのチュートリアルをたどっているうちに、OOPのデコレータパターンのアナロジーだと思うようになりました。私は正しいですか、それともモナドによく似たデザインパターンがありますか?
1558 次
3 に答える
6
モナドは間違いなくデコレータではありません。モナドに直接類似した、一般的に使用されている標準のOOPパターンはありません。OOPでモナドをうまく実装できますが、例を参照してください。
私が知っている最高のClojureベースのモナドチュートリアルは、BrianMarickによるこのビデオシリーズです。
これをよく見てみることをお勧めします。これは、多くの例を含むかなり良い入門書です。
于 2012-09-04T13:17:08.127 に答える
2
Haskellの既知のシンタックスシュガーにより、モナドを「オーバーライド可能なセミコロン」として考えることができます。
一般に、これは、現在使用されているモナドに応じて、同じ制御構造(コードブロック)で異なる処理を実行できることを意味します。
Haskellのqickの例
import Data.Maybe
import Data.List
funcMaybe x = do
z <- x
return $ z * z
funcList x = do
z <- x
return $ z * z
runMaybe = funcMaybe ( Just 5 )
runList = funcList [ 5, 6 ]
GHCIで実行されると、プロンプトが表示されます
ghci> runMaybe
Just 25
ghci> runList
[25, 36]
ご覧のとおり、同じコードブロックは異なる結果を生成します-ある場合にはリストし、別の場合には適切なデータ構造にラップされます
于 2012-09-04T13:28:45.737 に答える
-2
モナドはのようfunction composition on steroids
なものであり、OOの世界には同様の強力な概念はありません。
于 2012-09-04T09:31:47.760 に答える