最近、誰かがモナドに関して「クロックフォードの法則」を参照しました。Google は、結果をほとんど表示しません。誰がそれが何であるか知っていますか?
3085 次
2 に答える
33
「クロックフォードの法則」が彼がビデオの早い段階で言及している呪いであると仮定すると、彼はこの一般的な出来事について言及しています (こちらでより雄弁に説明されています):
- Xさんはモナドを理解していない
- person X は長く懸命に働き、モナドを理解する
- 人 X は驚くべき悟りの感覚を経験し、なぜ他の人が同じように悟っていないのか不思議に思う
- 人 X は、モナドについて、恐ろしく、不完全で、不正確で、単純化しすぎて、紛らわしい説明をするので、モナドはばかげている、ばかげている、無価値である、複雑すぎる、不必要である、何かが間違っている、または頭がおかしいと思われる可能性があります。
呪いが存在すると私が考える理由のいくつかを以下に示します。
- 関数型プログラミングがいわゆる「主流」プログラミングといかに異なるかを忘れています。FP とは何か、人々が FP を使用する理由を十分に理解していなければ、FP を使用して構築されたものは意味をなさないでしょう。こういうのは時間と手間がかかる
- ファーストクラスの市民としてのキャプチャ効果が、システムによって提供される効果とどのように異なるかを忘れている (たとえば、例外または変更可能な状態): 上記と同じ
- やる気を起こさせる良い例の欠如。ご存知のように、「これが問題です。これが典型的な解決策ですが、待ってください。典型的な解決策にはこれらの問題があるので、モナドを使用してそれらをきれいに修正する方法を見てみましょう!」これは、null ポインター例外に関する疲れた古い例よりもはるかに多くの作業です。
- モナドが提供するものを忘れる -- 私が目にする多くの「モナド」の例は、実際には Functor または Applicative Functor の例として問題なく動作する
- モナドがHaskell内に構築されていることを忘れています。質問: モナドが突然消えたとしても、Haskell で I/O を実行できますか?
- モナドには構文サポートまたは特定の型システムが必要であると考える
- モナドは変更可能な状態または I/O のみに関するものであると考えている
私は呪いの犠牲者になりました。:(
最後の質問の 1 つに基づいて、Crockford もそうしているように思えます。私見ですが、これは素晴らしい Javascript テクニックを学ぶのに最適なビデオですが、実際にモナドについて学びたいのであれば、それほど素晴らしいものではありません。
モナドについて学ぼうとしているなら、時間と労力を費やして、たくさんの例を試してみてください。すべてのモナドインスタンスとコンビネータをゼロから再実装します。最終的には、あなたも呪いの犠牲者になる立場になります!
于 2013-10-23T19:59:22.327 に答える