タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Monadに関するyubessyのブックマーク (3)

  • モナドはなぜモナド則を満たさなければならないのか?

    はじめに Haskell等でモナドという概念に触れていることを前提とします。 またこの記事では圏論の基礎的な知識を仮定します (クライスリ圏とかモノイド対象とかいう用語は出てこないから安心して!)。 私自身は情報系出身ではないため、計算機科学については詳しくありません。あくまで自分なりの理解を記したに過ぎないことをご了承ください。 参考文献 圏論の歩き方 このではでは圏論が各分野でどんなふうに使われているかがさらっと解説されています。 第5章は「モナドと計算効果」というタイトルで書かれています。 モナド則とは Haskell における型クラス Monad とは次のようなものです。 class Monad m where (>>=) :: forall a b. m a -> (a -> m b) -> m b return :: a -> m a ただし 2 つの関数 (>>=) と r

    モナドはなぜモナド則を満たさなければならないのか?
  • Monad laws - HaskellWiki

    Here, p ≡ q simply means that you can replace p with q and vice-versa, and the behaviour of your program will not change: p and q are equivalent. Using eta-expansion, the associativity law can be re-written for clarity as:

  • Scalazを使おう #1 | PSYENCE:MEDIA

    はじめに Scalazを導入するメリットを書いていきたいと思います。 今回は、モナドの有用性について書きたいと思います。 Scalazお試し REPLでScalazを動かすにはまず次のようなbuild.sbtファイルを作ります。 scalaVersion := "2.11.6" libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.1" initialCommands += "import scalaz._, Scalaz._" sbt consoleコマンドによりREPLでScalazが使えます。 モナドって何 モナドってなんだ??? 次の3つの法則(モナド則)を満たしていれば、それはモナドです。 (Monad[F].point(x)) >>= f == f x m >>= Monad[F].point == m (m >

    Scalazを使おう #1 | PSYENCE:MEDIA
  • 1