paz3のおもいつきスマートフォン用の表示で見るpaz3のおもいつきこの広告は、90日以上更新していないブログに表示しています。2013-01-13JavaScriptのMaybeモナドMaybeモナドモナドが少し理解できるようになったので、JavaScriptでMaybeモナドを作ってみました。この記事で使われているソースはGitHubにあります。使ってみる上記のモナドを使ってみます。あどけない話を参考にさせていただきました。次のように名前と親を格納したデーターがあるとします。Bobの親はDave、その親はSteve、その親はTonyです。};ある人物を与えたときにその人のひいおじいさんを返すような関数は、途中でundefinedに当たることを考慮して、次のように書くことができます。undefinedこれをMaybeモナドで書き直してみましょう。Maybeモナドを使うと失敗するかも知れない演算を合成することができます。人物を与えると親を返す関数fatherを定義します。親が存在する場合には親を内包するMaybe.Just(親)を、親が存在しない場合にはMaybe.Noneを返します。Maybe.None();}これを使うとひいおじいさんを返す関数は次のように書くことができます。Nonebindで計算を合成しています。関数fatherの値が途中でNoneになった場合、後続の演算はすべてNoneを返します。Maybeモナドを使わない元のコードでは「ひいひいおじいさんを返す関数」にするにはifのネストを上げる必要がありますが、Maybeモナドを使うと「.bind(father)」を追加するだけで済みます。私が作ったMaybeモナドでは内包する値を取り出す関数は用意していません。結果のJust(人物)から人物を取り出すにはvalueフィールドを参照します。...」のように書くとvalueフィールドがあるかどうか判断することができるため、Noneと識別することができます。モナド則モナドと名乗るにはモナド則を満たす必要があります。QUnitによるテストは次の通りです。モナド則の3つの規則すべてを満たしています。月別アーカイブはてなブログをはじめよう!paz3さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。