タグ

maybeに関するnsyeeのブックマーク (2)

  • MaybeCPSモナド - かしをろぐ

    2014-02-13 MaybeCPSモナド Haskell これね、新型のオスプレイ。 モナドはとても実用的な構造だ。モナドは単なる第一級手続きとは一線を画すものだ[要出典]。 Haskellという言語の上に新たな構文、制御構造、副作用を表現できる。自在手続きとでも言ってみようか。 そんなモナドだが、書き方によってはそのパフォーマンスが著しく低下してしまうことがある。 hoge :: Int -> Maybe Int hoge 0 = Nothing hoge i = hoge (i-1) >>= return このMaybeを返す単純な再帰関数は基底部に辿り着くまでに以下のような式を生成する。 (...(((Nothing >>= return) >>= return) >>= return) ... >>= return) 左結合で(>>=)がネストされていく様が見えるだろう。これを

  • Maybe モナドの秘密 - あどけない話

    Real World Haskell 読書会での Maybe モナドに関する議論をまとめておきます。 case と Maybe モナドの導入には、必ずといっていいほど、Maybe が使われます。たとえば、子供をキーとして検索すると、父親を得られる DB があるとします。 type DB = [(String,String)] db :: DB db = [ ("Bob","Dave") , ("Dave","Steve") , ("Steve","Tony") ] コードを簡潔にするために、DB を検索するための補助関数を導入します。 lookup' :: DB -> String -> Maybe String lookup' = flip lookup これらと case を使って、ひいおじいさんを探すコードを書くとこうなります。 -- コード1 findGGFather :: Str

    Maybe モナドの秘密 - あどけない話
  • 1