タグ

monad2に関するnfunatoのブックマーク (63)

  • Haskell: Control.Monad.Stateメモ - ラシウラ

    機能一覧や例は以下にあるけど、これだけで理解するのは正直難しい。 http://www.haskell.org/ghc/docs/6.4.1/html/libraries/mtl/Control-Monad-State.html 理解しにくそうなところを意識して書いてみる。 なにをするものか: 関数の中で上から順番にデータを更新していく処理を書きたいとき使う。だけではあるけど。 まずはimport Control.Monad.Stateを行ってState型を使い、 State stateType resultTypeという型で状態更新を利用するstateApp関数を自由に実装する(ドキュメントの例は戻り値型が同じで紛らわしいので型をStringに変えてます。$はあえてすべて()にしてます): import Control.Monad.State tick :: State Int Stri

    Haskell: Control.Monad.Stateメモ - ラシウラ
  • 絵で見るモナド · eed3si9n

    2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起

  • Arrows: A General Interface to Computation

    Arrows are a new abstract view of computation, defined by John Hughes [Hug00]. They serve much the same purpose as monads -- providing a common structure for libraries -- but are more general. In particular they allow notions of computation that may be partially static (independent of the input) or may take multiple inputs. If your application works fine with monads, you might as well stick with t