Movatterモバイル変換


[0]ホーム

URL:


SlideShare a Scribd company logo

Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ

29 likes16,362 views
Tomoharu ASAMI
Tomoharu ASAMI

QConTokyo 2015の講演スライドです。

1 of 56
Downloaded 30 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
MonadicProgrammingのススメ!Functional Reactive Programmingへのアプローチ2015年年4⽉月21⽇日Everforth浅海智晴
自己紹介•  1985年年富⼠士通(株)⼊入社•  UNIXワークステーション/サーバーのOS、分散基盤、Web基盤の開発に従事•  2001年年9⽉月に独⽴立立•  Java, XML, UMLを中⼼心に活動•  2005年年4⽉月より2007年年3⽉月まで•  稚内北北星学園⼤大学東京サテライト校教授•  現在•  (株) 匠BusinessPlace 取締役チーフコンサルタント•  (株) Everforth 取締役CTO•  著作•  上流流⼯工程UMLモデリング(⽇日経BP)•  マインドマップではじめるモデリング講座(翔泳社)http://www.apparel-cloud.com/http://www.takumi-businessplace.co.jp/
ApparelCloud データを一元化することで、多様な情報を、様々なメディア・デバイスを通じて 消費者に届け、真のCRMを実現する仕組み。http://www.apparel-cloud.com/
ApparelCloudクーポン  ブランドサイトオンラインストア ブログブランド                        アプリニュース ブログ ショップコンテンツ 集計・分析ダッシュボード複数メディア・コンテンツを⼀一元管理理し、クオリティの統⼀一と運⽤用コストの低減を実現。コンテンツを⼆二重三重に登録する必要もなく、データ分析などの⼀一元化も可能。
ApparelCloudシステム構成メディアアプリケーション管理アプリケーションWebConsolePrimefaces(JSF)WebAPIplayPUSHSenderplayEmailSenderplayEverforthEngineplayBatchEngineShellAnalysisEngineFinagleStreamEngineFinagleScalaJavaその他WebiOSAndroidWebiOSAndroidCoordinationEngineServiceMixCamel開発中開発中
Scala利用の文脈Object-FunctionalAnalysis and DesignObject-FunctionalProgrammingService Platform as-a-Service要求Cloud Serviceプログラム カスタマイズモデルModelSummay Model要求Apparel CloudServiceRegular ModelWireFrame(+ Usage)Mindmap ModelAPI Usage ListUse case ModelDomain Modelプログラム(開発)プログラム(自動生成)カスタマイズService Description参考: Everforthのモデル体系http://modegramming.blogspot.jp/2015/04/ofadeverforth.html
アジェンダ背景関数型プログラミングMonadic ProgrammingFunctional ReactiveProgramming
キーワード• Monad• Monadic Programming• Functional Reactive Programming
背景
新しい現実•  メニーコア、⼤大容量量メモリ、SSD•  並列列プログラミングハードウェア•  クラウド・サービス、スマート・デバイス•  故障、遅延•  ⼤大規模データ、⼤大規模演算•  ⾼高頻度度イベント、ストリーミング•  ⾮非同期、並列列、分散•  NoSQL、インメモリデータベース•  CQRS、Event Sourcing、Microserviceクラウド・プラットフォーム
The Reactive Manifest•  http://www.reactivemanifesto.org/•  ⽇日本語訳•  http://okapies.hateblo.jp/entry/2014/12/03/025921•  Responsive•  応答性:すぐ応答する•  Resilient•  耐故障性:回復復⼒力力に富む、⽴立立ち直りが早い•  Elastic•  弾⼒力力性:伸縮⾃自在の•  Message Driven•  メッセージ駆動•  関連: Reactive Streams•  http://www.reactive-streams.org/
Reactiveの実現Service ClusterCPU CoreFunctionServiceMessageMessageMessageFunctionFunctionFunctionFunctionFunctionServiceServiceServiceServiceFunctionReactiveConcurrentParallelDistributedResponsiveResillienceElasticityMessage DrivenConcurrentParallelDistributed
Functional Reactive ProgrammingへのアプローチObject-Oriented Programming並列処理アプリケーションActorObject-Oriented ProgrammingMonadic ProgrammingFunctional ProgrammingObject-Functional ProgrammingFunctional Reactive Programming並列処理アプリケーション
関数型プログラミング
関数型⾔言語の技術マップ抽象代数学数理論理学直感主義命題論理&自然演繹単純型付ラムダ計算純粋関数型言語命題型クラス群論Hask圏(プログラム圏)永続データ構造関数型言語手続き型言語代数的データ型Curry-Haward対応オブジェクト指向言語証明述語論理様相論理圏論直積 直和不変副作用なし参照透過性置換モデルモノイド モナド型計算
ScalaScalaOOP(Java + α)FunctionalProgramming(Haskell – α)モダン⽂文法(e.g. Ruby)DSL(Scalable)Java VM
代数的構造デザインパターン•  半群 (semigroup)•  モノイド  (monoid)•  群 (group)結合律律 (associative law)•  可換半群•  可換モノイド•  可換群(アーベル群)可換律律 (commutative law)•  環  (ring)•  体 (field)分配律律 (distributive law)(a + b) + c = a + (b + c)a + b = b + aa * (b + c) = a * b + a * c
圏論論デザインパターン圏  (category)• Hask圏 (Scala圏?)• クライスリ圏  (kleisli category)射 (arrow,morphism)関⼿手  (functor)Applicativefunctorモナド  (monad)
基本概念•  再帰 (recursion)•  ⾼高階関数 (high-order function)•  不不変データ (immutable data)•  遅延評価 (lazy evaluation)•  参照透過性 (referential transparency)•  (項)書換えモデル (substitution model)•  等式推論論  (equational reasoning)•  代数的データ型 (algebraic data type)•  直積, 直和 (direct product, direct sum)•  永続データ構造 (persistent data structure)•  エフェクト (effect)•  型クラス (type class)•  モナド (monad)Object-Oriented ProgrammingMonadic ProgrammingFunctional ProgrammingObject-Functional ProgrammingFunctional Reactive Programming並列処理アプリケーション
Monadic  Programming
モナド•  計算機科学におけるモナド(Monads)とは、計算機科学者のEugenio Moggiによって提案されたモジュール性を持たせた表⽰示的意味論論の枠組みを⾔言う。プログラムとはクライスリ圏の射である(a program is an arrow of a Kleisli category)、という要請から合成規則としてクライスリトリプル(Kleislitriple)というモナドと等価なものが⽤用いられる。(Wikipedia)•  In functional programming, a monad is a structure thatrepresents computations defined as sequences of steps: atype with a monad structure defines what it means tochain operations, or nest functions of that type together.This allows the programmer to build pipelines thatprocess data in steps, in which each action is decoratedwith additional processing rules provided by the monad.(Wikipedia)•  ⾮非常に難しい概念念•  使うのは(慣れれば)それほど難しくない•  モダンな関数型プログラミングの中核概念念
再利利⽤用メカニズムの⽐比較アプリ手続き型サブルーチンアプリオブジェクト指向フレームワークオブジェクトアプリ関数型(Monadic)型クラス関数A→BFunctorMonadA→M[B]
モナドの⽤用途•  コンテナ•  コレクション(List, Vector)•  成功失敗⽂文脈(Option)•  インタープリタ•  Freeモナド, Operationalモナド•  DI(Dependency Injection)•  Readerモナド•  状態機械•  Stateモナド•  Processモナド•  問合せ•  Slick•  Spark RDD(Resilient Distributed Dataset)
モナドの種類(⾮非公式分類)•  コンテナ型•  値を格納•  コンビネータを実⾏行行すると即時に評価が⾏行行われる•  インタープリタ型•  関数を格納•  コンビネータを実⾏行行すると関数を合成したモナド(インタープリタ)が返ってくる•  純粋関数型のセマンティクス•  runメソッドなどでインタープリタを実⾏行行する•  外部⼊入出⼒力力など⾮非純粋関数型処理理はこちらで⾏行行う•  外部⼊入出⼒力力など副作⽤用を伴う処理理はインタープリタ型モナドで対応•  IOモナド
コンテナ型モナド•  Option•  成功/失敗状態を扱うモナド•  List•  データ列列を扱うモナド(シーケンシャルアクセス向け)•  Vector•  データ列列を扱うモナド(ランダムアクセス対応)•  Stream•  遅延評価によるデータ列列を扱うモナド•  Try•  例例外発⽣生状態を扱うモナド•  Future•  並列列実⾏行行を扱うモナド
インタープリタ型モナド•  Stateモナド•  状態を表現するモナド•  IOモナド•  外部⼊入出⼒力力を扱うモナド•  Processモナド•  状態機械を表現するモナド•  ストリーム処理理を実現
Monadic Programmingの⾮非公式定義•  ⼀一義的にはモナドを活⽤用したプログラミング•  本セッションでは以下の型クラス(Scalaz)を活⽤用したプログラミングまでスコープを広げています•  Functor•  Applicative Functor•  Monad•  MonadはApplicative FunctorおよびFunctorでもある•  Monadを⽬目的によってApplicative FunctorまたはFunctorとして使うことも多い
Functor, Applicative Functor, Monad⾮非公式理理解FunctorApplicative FunctorMonadF.point(x).map(f).map(g).map(h)(A.point(x) |@| A.point(y) |@| A.point(z))(i(_, _, _))f g hffgghhixxyzM.point(x).flatMap(f).flatMap(g).flatMap(h)for {a <- M.point(x)b <- f(a)c <- g(b)d <- h(c)} yield d^^(A.point(x), A.point(y), A.point(z))(i(_, _, _))xOption(1).map(f).map(g).map(h)(Option(1) |@| Option(2) |@| Option(3))(i(_, _, _))Option(1).flatMap(f).flatMap(g).flatMap(h)
型クラス&Monadの使い所型クラス&Monadクラス予約 販売 顧客管理 分析ロギング並列処理故障耐性機能要求非機能要求セキュリティトランザクション分散処理例外処理OOPではAOPやDIによって実現してきた機能要求と⾮非機能要求の分離離を細粒粒度度、型安全に実現
Scalaz•  https://github.com/scalaz/scalaz•  キャッチフレーズ•  昔: Scalaz: Type Classes and Pure Functional DataStructures for Scala•  今: An extension to the core Scala library for functionalprogramming. http://typelevel.org•  最新の関数型プログラミングを可能にする機能群をScala向けに⽤用意•  型クラス•  純粋関数型データ構造•  Haskellで実績のある機能群をScalaで実現
Monadicプログラミングの効⽤用def validate(name: String, age: Int): ValidationNEL[Throwable, (String,Int)] = {!val a = validateName(name) !val b = validateAge(age) !if (a.isSuccess && b.isSuccess) { !val a1 = a.asInstanceOf[Success[NonEmptyList[Throwable], String]].a !val b1 = b.asInstanceOf[Success[NonEmptyList[Throwable], Int]].a !Success((a1, b1)) !} else if (a.isSuccess) { !b.asInstanceOf[Failure[NonEmptyList[Throwable], (String, Int)]] !} else if (b.isSuccess) { !a.asInstanceOf[Failure[NonEmptyList[Throwable], (String, Int)]] !} else { !val a1 = a.asInstanceOf[Failure[NonEmptyList[Throwable], String]].e !val b1 = b.asInstanceOf[Failure[NonEmptyList[Throwable], Int]].e !Failure(a1 |+| b1) !} !}!Java⾵風
def validate(name: String, age: Int):ValidationNEL[Throwable, (String, Int)] = { !validateName(name) match { !case Success(a) => validateAge(age) match { !case Success(b) => Success((a, b)) !case Failure(e) => Failure(e) !} !case Failure(e1) => validateAge(age) match { !case Success(b) => Failure(e1) !case Failure(e2) => Failure(e1 |+| e2) !} !} !} !def validate(name: String, age: Int):ValidationNEL[Throwable, (String, Int)] = { !(validateName(name) ⊛ validateAge(age))((_, _)) !}!Scala (関数型プログラミング)Scalaz (Monadicプログラミング)参考: Scala Tips / Validation (10) - applicativehttp://modegramming.blogspot.jp/2012/04/scala-tips-validation-10-applicative.html
プログラミング例例•  3つの関数を並⾏行行動作させ、それぞれの実⾏行行結果を引数にした関数を実⾏行行して最終結果を計算•  calcString(x: Int): String•  calcInt(x: Int): Int•  calcFloat(x: Int): Float•  finalCalc(x: String, y: Int, z: Float): String•  並列列処理理はFutureモナドで実現
準備object Util {import java.net.URLimport scala.concurrent.duration._import scalax.io.JavaConverters._def go[T](label: String)(body: => T) {val ts = System.currentTimeMillisval r = bodyval elapse = System.currentTimeMillis - tsprintln(s"$label ($elapse ms): $r")}def getPageLength(url: String): Int = {new URL(url).asInput.bytes.size}Scala流流のDSLの例例go (“bigCalc”) {val r = bigCalc(1000)Await.result(r, 1.minute)}
def calcString(n: Int): String = {Thread.sleep(n)n.toString}def calcInt(n: Int): Int = {Thread.sleep(n)n}def calcFloat(n: Int): Float = {Thread.sleep(n)n.toFloat}def finalCalc(s: String, i: Int, f: Float): String = {s"$s-$i-$f"}}
基本形def bigCalc(n: Int): String = {val a = calcString(n)val b = calcInt(n)val c = calcFloat(n)finalCalc(a, b, c)}bigCalc (3003 ms): 1000-1000-1000.0> go(“bigCalc”)(bigCalc(1000))
Optionモナドdef bigCalcO(n: Int): Option[String] = {for {a <- Option(calcString(n))b <- Option(calcInt(n))c <- Option(calcFloat(n))} yield finalCalc(a, b, c)}Monadf g hxbigCalcO (3005 ms): 1000-1000-1000.0> go(“bigCalcO”)(bigCalcO(1000))for式(for ... yield)でmonadicなパイプラインを構築参考: Scala Tips/Option Indexhttp://modegramming.blogspot.jp/2012/02/scala-tips-option-index.html
OptionモナドMonadic関数版def calcStringO(n: Int): Option[String] = {Option(calcString(n))}def calcIntO(n: Int): Option[Int] = {Option(calcInt(n))}def calcFloatO(n: Int): Option[Float] = {Option(calcFloat(n))} def bigCalcO2(n: Int): Option[String] = {for {a <- calcStringO(n)b <- calcIntO(n)c <- calcFloatO(n)} yield finalCalc(a, b, c)}Monadf g hxbigCalcO2 (3005 ms): 1000-1000-1000.0> go(“bigCalcO2”)(Await.result(bigCalcO2(1000), 1.minute))A->M[B]モナディック関数for式にモナディック関数を組み合わせるのがイディオム
Futureモナドval executorService = Executors.newFixedThreadPool(10)implicit val executionContext = ExecutionContext.fromExecutorService(executorService)def bigCalcP(n: Int): Future[String] = {for {a <- Future(calcString(n))b <- Future(calcInt(n))c <- Future(calcFloat(n))} yield finalCalc(a, b, c)}Monadf g hxbigCalcP (3017 ms): 1000-1000-1000.0> go(“bigCalcP”)(Await.result(bigCalcP(1000), 1.minute))
Futureモナド改良良版def bigCalcP2(n: Int): Future[String] = {val fa = Future(calcString(n))val fb = Future(calcInt(n))val fc = Future(calcFloat(n))for {a <- fab <- fbc <- fc} yield finalCalc(a, b, c)}Monadf g hxbigCalcP2 (1005 ms): 1000-1000-1000.0> go(“bigCalcP2”)(Await.result(bigCalcP2(1000), 1.minute))モナディック処理理の前にFutuerを開始
Future Applicativedef bigCalcP3(n: Int): Future[String] = {import scalaz._, Scalaz._(Future(calcString(n)) |@| Future(calcInt(n)) |@| Future(calcFloat(n)))(finalCalc)}def bigCalcP31(n: Int): Future[String] = {import scalaz._, Scalaz._^^(Future(calcString(n)), Future(calcInt(n)), Future(calcFloat(n)))(finalCalc)}Applicative FunctorfghixyzbigCalcP3 (1162 ms): 1000-1000-1000.0bigCalcP31 (1004 ms): 1000-1000-1000.0>go(“bigCalcP3”)(Await.result(bigCalcP3(1000), 1.minute))> go(“bigCalcP31”)(Await.result(bigCalcP31(1000), 1.minute))Applicativeを使うと綺麗麗に記述できる
Future Applicative改良良版def bigCalcA[A[_]](n: Int)(implicit C: Applicative[A]): A[String] = {^^(C.point(calcString(n)),C.point(calcInt(n)),C.point(calcFloat(n)))(finalCalc)}Applicative FunctorfghixyzbigCalcAF (1003 ms): 1000-1000-1000.0bigCalcAI (3001 ms): 1000-1000-1000.0>go(“bigCalcAF”)(Await.result(bigCalcA[Future](1000), 1.minute))> go(“bigCalcAI”)(bigCalcA[Id](1000), 1.minute))型クラスを利利⽤用し任意のApplicativeを使えるように汎⽤用化Applicativeのpointメソッドはvirtual constructorロジック(機能要求)からApplicativeとしてパラメタ化した⾮非機能要求を分離離
Functional  Reactive  Programming
Reactiveの実現(再掲)Service ClusterCPU CoreFunctionServiceMessageMessageMessageFunctionFunctionFunctionFunctionFunctionServiceServiceServiceServiceFunctionReactiveConcurrentParallelDistributedResponsiveResillienceElasticityMessage DrivenConcurrentParallelDistributed
Functional ReactiveProgrammingで実現したいこと•  関数型プログラミングのメリットを享受•  参照透過性•  関数による部品化/部品の組⽴立立て•  パイプラインのセマンティクス•  イベント駆動処理理•  Callback hellの排除•  ストリーム処理理•  リソース管理理•  フロー制御•  ⼤大規模データ処理理•  リソース管理理•  省省メモリ
Functional Reactive Programmingの候補•  RxJava – Scala•  https://github.com/ReactiveX/RxJava•  Observableモナド•  Scalaz Stream•  https://github.com/scalaz/scalaz-stream•  Processモナド•  Akka Stream•  https://typesafe.com/blog/typesafe-announces-akka-streams•  Akka actor
scalaz stream•  ScalazベースのStreaming I/Oライブラリ•  https://github.com/scalaz/scalaz-stream•  ⽤用途•  ⼊入出⼒力力処理理フレームワーク•  パイプライン•  部品化、部品合成によるロジック記述•  ⼤大規模データ⼀一括処理理•  ストリーム処理理•  Processモナド•  参照透過性:副作⽤用なし•  部品化:パイプラインによる関数の合成•  リソースの獲得・解放•  フロー制御•  状態機械
Processモナド既存部品 アプリケーション・ロジックリソース管理トランザクション管理フロー制御Function FunctionProcessMonadProcessMonadChannel SinkChannel SinkProcess Monad
プログラミング例例•  パイプラインを流流れてくるデータを以下のルールでパケット化•  3つで⼀一つのパケットにする•  パケットにシーケンス番号をつける•  “start”データの前のパケットにエンドマークをつける•  上記アルゴリズムを実現した部品を⼤大規模データ処理理とストリーミング処理理の両⽅方に適⽤用する参考: [scalaz-stream] シーケンス番号とエンドマークhttp://modegramming.blogspot.jp/2015/03/scalaz-stream.html
準備case class Packet(seqno: Int, end: Boolean, content: String)def sink: Sink[Task, Packet] = {io.channel((a: Packet) => Task.delay(println(a)))}参考: [scalaz-stream] ストリーミングで状態機械http://modegramming.blogspot.jp/2015/04/scalaz-stream.html参考: [scalaz-stream] Scala的状態機械/OOP編http://modegramming.blogspot.jp/2015/03/scalaoop.html参考: [scalaz-stream] Scala的状態機械/FP編http://modegramming.blogspot.jp/2015/03/scalafp.html
アプリケーション・ロジック        def buildTextToPacket[M[_]: Monad](source: Process[M, String]):Process[M, Packet] = {source.chunk(3). // 3個ずつチャンク化            pipe(zipWithNext). // 次のパケットを同時に取得            pipe(zipWithIndex). // インデックを採番            map(toPacket)}def toPacket(x: ((Vector[String], Option[Vector[String]]), Int)):Packet = {val ((current, next), index) = xval content = current.mkString("-")val isend = next.cata(_.headOption === Some("start"), true)Packet(index + 1, isend, content)}既存部品とアプリケーションロジックを組合せてパイプラインを構築以下のロジックを実現- 3つで⼀一つのパケットにする- パケットにシーケンス番号をつける- “start”データの前のパケットにエンドマークをつける
⼤大規模データ処理理val source = io.linesR("data.txt")val pipeline = buildTextToPacket(source).to(sink)pipeline.run.runPacket(1,false,1-2-3)Packet(2,true,4-5-6)Packet(3,true,start-8-9)123456start89汎⽤用部品を⼤大規模データ処理理に適⽤用リソース管理フロー制御chunkzipWithNextzipWithIndextoPacketChannel SinkProcess Monad
EventProcessorval queue = EventProcessor.qval source = Vector("1", "2", "3", "4", "5", "6", "start", "8", "9")source foreach { x =>queue.enqueueOne(x).runThread.sleep(2000)}object EventProcessor {val q = async.unboundedQueue[String]val eventStream: Process[Task, String] = q.dequeue}参考: [scalaz-stream] ストリーミングで状態機械http://modegramming.blogspot.jp/2015/04/scalaz-stream.html
ストリーム処理理val source = EventProcessor.eventStreamval pipeline = buildTextToPacket(source).to(sink)pipeline.run.runPacket(1,false,1-2-3)Packet(2,true,4-5-6)汎⽤用ロジックをストリーミング処理理に適⽤用リソース管理フロー制御chunkzipWithNextzipWithIndextoPacketChannel SinkProcess Monad
まとめ•  モナド•  マイクロ・フレームワーク•  DSL(Domain Specific Language)•  Monadic Programming•  モナドベースのパイプラインプログラミング•  関数による部品化、部品の組み⽴立立て•  Functional Reactive Programming•  Futureモナド•  Processモナド
END
Ad

Recommended

PDF
LR parsing
ichikaz3
 
PDF
WebブラウザでP2Pを実現する、WebRTCのAPIと周辺技術
Yoshiaki Sugimoto
 
PDF
ゲーム開発者のための C++11/C++14
Ryo Suzuki
 
PDF
A3Cという強化学習アルゴリズムで遊んでみた話
mooopan
 
PPTX
強化学習 と ゲーム理論 (MARL)
HarukaKiyohara
 
PDF
直交領域探索
okuraofvegetable
 
PDF
スペクトラル・クラスタリング
Akira Miyazawa
 
PDF
LSTM (Long short-term memory) 概要
Kenji Urai
 
PPTX
Visual Studio CodeでRを使う
Atsushi Hayakawa
 
PDF
Virtual Tsukuba Challenge on Unity のアップデートについて
Ryodo Tanaka
 
PPTX
The review of 'Explaining nonlinear classification decisions with deep Taylor...
tetsuo ishigaki
 
PDF
計算量
Ken Ogura
 
PDF
Marp入門
Rui Watanabe
 
PDF
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
 
PDF
Deeplearning輪読会
正志 坪坂
 
PDF
“確率的最適化”を読む前に知っておくといいかもしれない関数解析のこと
Hiroaki Kudo
 
PPTX
Transformerを雰囲気で理解する
AtsukiYamaguchi1
 
PDF
機械学習モデルのハイパパラメータ最適化
gree_tech
 
PPTX
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII
 
PDF
ITと数学で社会に役立つ数理最適化
京都大学大学院情報学研究科数理工学専攻
 
PDF
強化学習の分散アーキテクチャ変遷
Eiji Sekiya
 
PPTX
HTTP2 最速実装 〜入門編〜
Kaoru Maeda
 
PPTX
Tokyo BISH bash presentation
Sayaka Shiota
 
PDF
GoogleのSHA-1のはなし
MITSUNARI Shigeo
 
PDF
畳み込みネットワークによる高次元信号復元と異分野融合への展開
Shogo Muramatsu
 
PDF
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
 
PDF
深層学習 第6章
KCS Keio Computer Society
 
PPTX
A3C解説
harmonylab
 
PDF
「望ましさ」による優先順位づけ
Arata Fujimura
 
KEY
Deriving Scalaz
nkpart
 

More Related Content

What's hot(20)

PPTX
Visual Studio CodeでRを使う
Atsushi Hayakawa
 
PDF
Virtual Tsukuba Challenge on Unity のアップデートについて
Ryodo Tanaka
 
PPTX
The review of 'Explaining nonlinear classification decisions with deep Taylor...
tetsuo ishigaki
 
PDF
計算量
Ken Ogura
 
PDF
Marp入門
Rui Watanabe
 
PDF
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
 
PDF
Deeplearning輪読会
正志 坪坂
 
PDF
“確率的最適化”を読む前に知っておくといいかもしれない関数解析のこと
Hiroaki Kudo
 
PPTX
Transformerを雰囲気で理解する
AtsukiYamaguchi1
 
PDF
機械学習モデルのハイパパラメータ最適化
gree_tech
 
PPTX
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII
 
PDF
ITと数学で社会に役立つ数理最適化
京都大学大学院情報学研究科数理工学専攻
 
PDF
強化学習の分散アーキテクチャ変遷
Eiji Sekiya
 
PPTX
HTTP2 最速実装 〜入門編〜
Kaoru Maeda
 
PPTX
Tokyo BISH bash presentation
Sayaka Shiota
 
PDF
GoogleのSHA-1のはなし
MITSUNARI Shigeo
 
PDF
畳み込みネットワークによる高次元信号復元と異分野融合への展開
Shogo Muramatsu
 
PDF
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
 
PDF
深層学習 第6章
KCS Keio Computer Society
 
PPTX
A3C解説
harmonylab
 
Visual Studio CodeでRを使う
Atsushi Hayakawa
 
Virtual Tsukuba Challenge on Unity のアップデートについて
Ryodo Tanaka
 
The review of 'Explaining nonlinear classification decisions with deep Taylor...
tetsuo ishigaki
 
計算量
Ken Ogura
 
Marp入門
Rui Watanabe
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
 
Deeplearning輪読会
正志 坪坂
 
“確率的最適化”を読む前に知っておくといいかもしれない関数解析のこと
Hiroaki Kudo
 
Transformerを雰囲気で理解する
AtsukiYamaguchi1
 
機械学習モデルのハイパパラメータ最適化
gree_tech
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII
 
ITと数学で社会に役立つ数理最適化
京都大学大学院情報学研究科数理工学専攻
 
強化学習の分散アーキテクチャ変遷
Eiji Sekiya
 
HTTP2 最速実装 〜入門編〜
Kaoru Maeda
 
Tokyo BISH bash presentation
Sayaka Shiota
 
GoogleのSHA-1のはなし
MITSUNARI Shigeo
 
畳み込みネットワークによる高次元信号復元と異分野融合への展開
Shogo Muramatsu
 
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
 
深層学習 第6章
KCS Keio Computer Society
 
A3C解説
harmonylab
 

Viewers also liked(20)

PDF
「望ましさ」による優先順位づけ
Arata Fujimura
 
KEY
Deriving Scalaz
nkpart
 
PDF
MindmapModelingチュートリアル
Tomoharu ASAMI
 
PDF
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
 
PDF
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
PDF
Object-Funcational Analysis and design
Tomoharu ASAMI
 
PDF
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
PDF
楽々Scalaプログラミング
Tomoharu ASAMI
 
PDF
Monadicプログラミング マニアックス
Tomoharu ASAMI
 
KEY
Scalaz
mpilquist
 
PDF
実務者のためのかんたんScalaz
Tomoharu ASAMI
 
PPTX
Typography Inspiration from Movie Title Cards
Quality Logo Products
 
DOCX
Mafer cuadros (1)
JONATHAN Apellidos
 
PPSX
Social Media for Book Publishers and Authors
HikeBandit
 
PDF
Social Media for Awareness and Influence
David Horne
 
PPTX
Building trust for cloud customers - the value of cif certification
David Terrar
 
PDF
L'elefante incatenato
HR&O Consulting
 
PPTX
8/28 數位教學檔案製作
Jin-yuh Huang
 
PPTX
8b/10b Encoder Decoder design and Verification for PCI Express protocol usin...
T. Rajib Subudhi
 
PPTX
Social Media for B2B Small Business
Infusionsoft
 
「望ましさ」による優先順位づけ
Arata Fujimura
 
Deriving Scalaz
nkpart
 
MindmapModelingチュートリアル
Tomoharu ASAMI
 
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
 
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
Object-Funcational Analysis and design
Tomoharu ASAMI
 
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
楽々Scalaプログラミング
Tomoharu ASAMI
 
Monadicプログラミング マニアックス
Tomoharu ASAMI
 
Scalaz
mpilquist
 
実務者のためのかんたんScalaz
Tomoharu ASAMI
 
Typography Inspiration from Movie Title Cards
Quality Logo Products
 
Mafer cuadros (1)
JONATHAN Apellidos
 
Social Media for Book Publishers and Authors
HikeBandit
 
Social Media for Awareness and Influence
David Horne
 
Building trust for cloud customers - the value of cif certification
David Terrar
 
L'elefante incatenato
HR&O Consulting
 
8/28 數位教學檔案製作
Jin-yuh Huang
 
8b/10b Encoder Decoder design and Verification for PCI Express protocol usin...
T. Rajib Subudhi
 
Social Media for B2B Small Business
Infusionsoft
 
Ad

Similar to Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ(20)

PDF
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
Tomoharu ASAMI
 
PDF
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
 
PDF
Kaleidox
Tomoharu ASAMI
 
PDF
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
 
PDF
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
 
PDF
ケーススタディ/実装 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第46回】
Tomoharu ASAMI
 
PDF
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
 
PDF
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
 
PDF
企業システムにアジャイルは必要か
Hiromasa Oka
 
PDF
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
 
PDF
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
 
PDF
ケーススタディ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第40回】
Tomoharu ASAMI
 
PDF
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
 
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
 
PDF
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
 
PDF
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
Tomoharu ASAMI
 
PDF
プレゼンテーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第38回】
Tomoharu ASAMI
 
PDF
モデリングの未来 〜~パネルディスカッション
Tomoharu ASAMI
 
PPTX
R超入門機械学習をはじめよう
幹雄 小川
 
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Akira Inoue
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
Tomoharu ASAMI
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
 
Kaleidox
Tomoharu ASAMI
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
 
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
 
ケーススタディ/実装 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第46回】
Tomoharu ASAMI
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
 
企業システムにアジャイルは必要か
Hiromasa Oka
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
 
DSL駆動によるクラウド・アプリケーション開発
Tomoharu ASAMI
 
ケーススタディ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第40回】
Tomoharu ASAMI
 
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Shumpei Shiraishi
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
Tomoharu ASAMI
 
プレゼンテーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第38回】
Tomoharu ASAMI
 
モデリングの未来 〜~パネルディスカッション
Tomoharu ASAMI
 
R超入門機械学習をはじめよう
幹雄 小川
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Akira Inoue
 
Ad

More from Tomoharu ASAMI(20)

PDF
ケーススタディ/テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第47回】
Tomoharu ASAMI
 
PDF
設計モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第45回】
Tomoharu ASAMI
 
PDF
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
Tomoharu ASAMI
 
PDF
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
Tomoharu ASAMI
 
PDF
要求モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第42回】
Tomoharu ASAMI
 
PDF
ビジネス・モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第41回】
Tomoharu ASAMI
 
PDF
Cloud Native Component Framework 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第39回】
Tomoharu ASAMI
 
PDF
アプリケーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第37回】
Tomoharu ASAMI
 
PDF
ドメイン・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第36回】
Tomoharu ASAMI
 
PDF
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Tomoharu ASAMI
 
PDF
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
Tomoharu ASAMI
 
PDF
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
Tomoharu ASAMI
 
PDF
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
Tomoharu ASAMI
 
PDF
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
Tomoharu ASAMI
 
PDF
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
 
PDF
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
 
PDF
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
 
PDF
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
 
PDF
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
Tomoharu ASAMI
 
PDF
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
Tomoharu ASAMI
 
ケーススタディ/テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第47回】
Tomoharu ASAMI
 
設計モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第45回】
Tomoharu ASAMI
 
分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】
Tomoharu ASAMI
 
要求モデル/BDD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第43回】
Tomoharu ASAMI
 
要求モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第42回】
Tomoharu ASAMI
 
ビジネス・モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第41回】
Tomoharu ASAMI
 
Cloud Native Component Framework 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第39回】
Tomoharu ASAMI
 
アプリケーション・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第37回】
Tomoharu ASAMI
 
ドメイン・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第36回】
Tomoharu ASAMI
 
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Tomoharu ASAMI
 
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
Tomoharu ASAMI
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
Tomoharu ASAMI
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
Tomoharu ASAMI
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
Tomoharu ASAMI
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
Tomoharu ASAMI
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
Tomoharu ASAMI
 

Recently uploaded(8)

PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 

Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ


[8]ページ先頭

©2009-2025 Movatter.jp