terminology - Haskell - モナドとは何ですか?

モナド Python / haskell / functional-programming / monads

最近Haskellを簡単に見てきましたが、モナドが本質的に何であるかについて、簡潔で簡潔で実用的な説明は何でしょうか?

7 revs, 7 users 67%



Answer #1

この値をどのように構成するかは重要ではありませんが、例えば、現在画面に表示されているものを表すバイト長のアスキー文字の配列と、ユーザーが入力した最後の行を表す配列を、擬似的に作成してみましょう。コンソールの状態を受け取り、それを修正し、新しいコンソールの状態を返すいくつかの関数を定義しました。

consolestate MyConsole = new consolestate;

そのため、コンソールプログラミングを純粋な関数型で行うには、多くの関数呼び出しを互いに入れ子にする必要があります。

consolestate FinalConsole = print(input(print(myconsole, "Hello, what's your name?")),"hello, %inputbuffer%!");

この方法でプログラミングすると、「純粋な」関数型スタイルを維持しつつ、コンソールへの変更を特定の順序で行わせることができます。しかし、上の例のように、一度にいくつかの操作を行うだけではなく、もっと多くの操作を行いたいと思うことでしょう。このように関数を入れ子にしていくと、だんだんと不便になってきます。そこで、上記の例と基本的には同じことを行うコードを、もう少し次のように書いてみましょう。

consolestate FinalConsole = myconsole:
                            print("Hello, what's your name?"):
                            input():
                            print("hello, %inputbuffer%!");