最近では DDD 関連で語られることもある Functional Reactive Programming (FRP)の分野では、Arrowがよく使われてるという。Arrows-based FRP といった呼び方もあるらしい。 ただ、Scalaのライブラリに入っているのを見たことはあるけど、今まで使ったことがない。そこで今後の予習もかねて、Cats に入っている Arrow で素振りしてみる。お題は、Haskellの Arrow tutorial を選んでみた。 ちなみに自分は初見時やや混同したけど、圏論で「射(morphism)は〜で矢印(arrow)とも呼ばれる」といった文脈での arrow とこのArrow は別のもので(参考)、Freyd-category という圏の一種らしい。ただしここでは深入りせず、monad の generalization としての単なる型クラスの一つとい
はじめに 『すごいHaskellたのしく学ぼう(以下テキスト)』の14章8節に、カスタムモナドのサンプルとして「確率モナド」が載っている。今回は、この確率モナドを Scala の圏論ライブラリ Cats を用いて書いてみる。 また、テキストには「できたばかりのモナドが、きちんとモナド則を満たしているか試すことも、とても重要です。」との記述もある。これも大事なので、Discipline を使って確認してみる。 使用ライブラリ compilerPlugin("org.spire-math" %% "kind-projector" % "0.9.8"), "org.typelevel" %% "cats-core" % "1.6.0", "org.typelevel" %% "cats-laws" % "1.6.0", "org.scalacheck" %% "scalacheck" % "1.
The language Scala promises a smooth migration path from Object-oriented Java to functional programming. It runs on the JVM, has concepts both from OOP and FP, and an emphasis on interoperability with Java. As a multi-paradigm language, Scala can flatten the learning curve for those already familiar with OOP, at the price of making some compromises in language design that can make functional progr
以下の2つの続き ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 FutureとEitherの話の続き(ApplicativeとMonadの違い) 上記の2つ(特に最初の方)を読んだことを前提で書くので、読んでない人は先にそちらを読みましょう。 なんだか少し関連する話(?)で盛り上がっていて、書かないといけない気がしてきたので 非同期プログラミングの難しさとScalaのFuture そのtogetterの議論について色々書きたいこと*1もありますが、それは置いておき、表題の「モナドによる同期/非同期プログラミングの抽象化」について書きます。というか、(非同期プログラミングの話より)便乗してモナドとモナドトランスフォーマーの便利さを話したいだけかもしれません(?) 前回2つは「Future使って非同期にしても、だいたい関数の本体同じでいけるよ」ということを書きました
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く