すごいH本リストモナド5という値は決定的である。[1,2,3]のような値は複数の計算結果を含んでいるとも、複数の候補地を同時に重ね合わせたような1つの値であるとも解釈できる。[10,100,1000][10,100,1000,20,200,2000,30,300,3000]左辺のリスト要素と右辺のリスト要素のすべての組み合わせが結果のリストに含まれており、非決定性を表現している。この非決定性計算はモナドとして利用することができる。引数の値が1つだけ入っているリストを作って返す。普通の値をリストにくるんで非決定な値に混ぜたいときに便利。-x])[3,-3,4,-4,5,-5]リスト内の要素に関数が適用されリストががっちゃんこされて返ってきている。非決定性計算は失敗する可能性のある計算の上位互換になっている。[][]空リストは返すべき値がなにもないということを表現しており、MaybeのNothingと似ている。リストにおける失敗は空リストで表現すればよい。Maybeのときと同様でリストを連結して非決定性という文脈を伝播できる。ch)[(1,'a'),(1,'b'),(2,'a'),(2,'b')]これは、[1,2]の各要素n、['a','b']各要素chに対して、タプルを作りなさいというプログラムになっている。listOfTuples[(1,'a'),(1,'b'),(2,'a'),(2,'b')]非決定性という文脈を>>=がいい感じにしてくれている。文脈というものがイメージできるようになってきたので、モナドがやってくれていることもだんだんイメージできるようになってきた。モナドは強化されたアプリカティブファンクターである。以下のような共通の性質をもつ関数が存在する。(1)月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。