SlideShare a Scribd company logo
1 of 79
Download to read offline
凜数プログラミングの集い2011
    チュヌトリゕル
   「モナドに぀いお」
 株匏䌚瀟 Preffered Infrastructure
       田侭 英行
   tanaka.hideyuki@gmail.com
自己玹介
• 田䞭英行 (@tanakh, id:tanakh)
• 株匏䌚瀟 Preferred Infrastructure (PFI) 勀務
    – 怜玢゚ンゞンのゕルゎリズムずか䜜っおたす
•   Haskell (2004)
•   C++ (1998)
•   BASIC (1992)
•   プログラミングコンテスト愛奜家
    – ICPC, ICFPC, CodeJam, TopCoder, 

本日の抂芁
• モナドずは
• モナドの䜿い方
 – モナドのセマンテゖクス
 – 兞型的なモナドの䟋
 – Haskellでのモナド
• モナドの䜜り方
 – モナドの゗ンスタンスに
 – モナド倉換子
What is Monad?

モナドずは
モナドずは䜕か
• 非垞に難しい質問です
• 既に数倚くの人がそれに答えようずしお
  いたす
 – そしお各々が䞀芋党く違う䞻匵をしおいる
幟぀かの䟋
『モナドは象である』
『モナドはメタフゔヌではない』
『プログラマブル・コンテナ』
『コンベゕのゕナロゞヌ』




        from “All About Monads”
いろいろありたすが 
• 結局モナドずはなんなのか




             モナドの力の秘密、
             い぀か解き明かしおみたいな 
モナドに぀いおの疑問
• 疑問にもいろいろある
 – モナドずは䜕か
 – 䜕の圹に立぀のか
 – なぜモナドなのか
   モナドがもおはやされるのか
  • ゕロヌずモナド、どうしお差が぀いた 
• それぞれに぀いお、私なりの芋解
モナドずは䜕なのか
• モナドずはパラダ゗ムである 
抜象的な話
パラダ゗ム
• プログラミングパラダ゗ム
 – 手続き型
 – 関数型
 – 論理型
 – オブゞェクト志向

 – モナデゖック
  • ここじゃない
モナドずは手続き型パラダ゗ムの
    再定矩である
• プログラミングパラダ゗ム
 – 手続き型
  • モナデゖック
 – 関数型
 – 論理型
 – オブゞェクト志向
意味的偎面からの
    モナドのメタフゔヌ
• モナドは『プログラマブルセミコロン』
  である
Programmable Semicolon
• Real World Haskell より
手続き型蚀語ず構造化定理
• プログラムは、「順次・反埩・分岐」の
  基本的な構造の組み合わせによっお蚘述
  できる
• これらはモナドぞ盎接的にマッピングで
  きる
それで、䜕が嬉しいの
• 分岐のセマンテゖクス曞き換え
• 反埩のセマンテゖクス曞き換え
 – そういうこずができる蚀語は過去にはあった
• 逐次のセマンテゖクス曞き換え
 – か぀お無いもの の様な気がしたす
逐次のセマンテゖクス
• およそほずんどの手続き型蚀語では、
  セミコロンの意味は倉えられない
 – 空気のような存圚
• セミコロンの意味を倉えるこずの意矩が
  䌝統的に芋逃されお来たのではないか
 int main()
 {                 main =
   foo(); bar();     foo >> bar
 }
継続ずの関係
• モナドは継続(continuation)の䞀般化ずも考
  えるこずができたす
• 継続各セミコロンにおけるプログラム
  の状態
• モナドはセミコロンを蚘述するわけなの
  で、その状態を取り出すこずは簡単
 – 実際に継続モナドずいうものがありたす
セミコロンをいじるこずにより
     可胜になるこず
• 普通のプログラムを非決定蚈算に倉える
• 普通のプログラムに゚ラヌハンドリング
  を(プログラムを曞き換えずに)远加する
• 普通のプログラムに暗黙の状態を導入す
  る
コンテクスト
• 具䜓的なモナドに察しお、それが蚈算に
  付加䟡倀を䞎えたす。それを蚈算の
  コンテクストず呌ぶこずにしたす
 – ぀たり、モナドずいうのはコンテクスト付き
   の蚈算ずいうこずができる
• 䟋えば 
 – monad:リストモナド → ctx:非決定性
 – monad:Stateモナド → ctx:mutableな状態
 – etc 

それぞれにそういうプログラムを
曞けばいいんじゃないんですか
• コンテクストごずに異なる蚘法
• コンテクストごずに異なるプログラム
• コンテクストごずに異なる語圙
 ・・・



         抜象化の欠劂
コンテクストの抜象化
• 共通のゕルゎリズムの蚘述
• 共通のコヌド片の抜象化




     よりメタレベルの抜象化ぞ
床䞋配線のゕナロゞヌ
• モナドによるセミコロンの抜象化は
  床䞋配線ず䟋えられるこずも
 – 芋えないずころを曞き換える
少し具䜓的な話
䟋
• N-ク゗ヌン問題
 – Int が䞎えられお解を返す
 – 解ずはなんぞや
  • 党解列挙
  • どれか䞀぀を芋぀ける
  • 䞀番いい解を頌む
 – いろいろ考えうる
N-Queen問題
• モナデゖックに曞くず、これらを統䞀的
  に扱える
 – 解の列挙のストラテゞをモナドずしお蚘述
 – 問題を解くゕルゎリズムからの分離
前半たずめ
• モナドずは䜕なのか
 – 蚈算コンテクストの抜象化である
• なんでそれが嬉しいの
 – 具䜓的なコンテクストに䟝存しないコヌドを
   曞ける
 – 抜象化したものを具䜓的なコヌドにできる
• なぜモナドなの
 – モナドは構造化定理に必芁な芁玠を自然に蚘
   述できお、なおか぀簡朔であるから
䞉行で蚀うず

• モナドは関数レベルで
 • メタプログラミング
 • するためのものです



  (Ž_`)えっ 
How to use Monads

モナド入門・モナドの䜿い方
実装レベルのお話
モナドずは
• “ある特定の方法”で組み合わせるこずので
  きる蚈算のこずをたずめお、


      モナド
ず呌びたす。
ちなみに
• 組み合わせ可胜な蚈算はモナドだけではあり
  たせん
 – いろいろな抜象化におけるそれが存圚
• 䟋えば、
 –   関数 関数合成
 –   フゔンクタ 関手
 –   ゕプリカテゖブ・フゔンクタ
 –   ゕロヌ
 –   Iteratee
 –   etc

ひずたず眮いおおいお、
Haskellでのモナドのお話
Haskellでのモナド
• 次のような型クラス




これの゗ンスタンスが具䜓的なモナド
蚈算コンテクスト
モナドになっおいる暙準デヌタ型

• 暙準デヌタ型の䞭にもモナドがある
 – リスト
 – Maybe
 – Either
 – IO
モナド則の必芁性
• モナド則は、モナドを安党に組み合わせ
  るのに必芁
 – これらの挙動が同じでなければ、組み合わせ
   方によっお意味が倉わるずいうこずになる
Haskellのdo蚘法
• Haskellではモナドを非垞によく䜿うので、
  専甚の構文糖衣が甚意されおいたす
高床なモナドの䜿い方
リストモナド
• リストはモナドにできる
• リストは非決定
  蚈算のコンテクスト
  ず捉えるこずが
  できる
Maybeモナド
• Maybeもモナド
• 倱敗するかもしれない蚈算
IOモナド
• 入出力を行う可胜性のある蚈算
• HaskellではIOモナドを介しおしか入出力を
  扱えない
IOモナドの功眪
• モナドに関するよくある誀解
 – モナドっおpurely functional languageでIOする
   ためにあるんでしょ


• モナドはIOのためにあるのではありたせん
• モナドはIOのためにあるのではありたせん
 – 倧事なこずなので
モナド則
• すべおのモナドは次のモナド則を満たす
  ”べき”である
 – 満たす保蚌をするのはプログラマの責任
 – あえお満たさなくおも良い
モナド倉換子(Monad Transformers)

• モナドずモナドを組み合わせるもの
 – (cf. 蚈算ず蚈算を組み合わせるものがモナド)
動機
• 耇数の蚈算コンテクストを合成したい
 – 倱敗するかもしれないIO蚈算
 – ゚ラヌハンドリングできるパヌザヌ
 – etc, 

MTL (Monad Transformer Library)
• 暙準のモナドラ゗ブラリ
 – Preludeのモナドを倧幅匷化
• これらのものを含む
 – 幟぀かの暙準的なモナド
 – これらのモナドを合成するための
   モナド倉換子(Monad Transformers)
MTLに含たれるモナド
•   Monad.Cont 継続
•   Monad.Reader ReadOnly状態
•   Monad.Writer ログ出力
•   Monad.State Mutable状態
•   Monad.List 非決定蚈算
•   Monad.Error ゚ラヌハンドリング

• これに加え、それぞれのモナド倉換子版
モナド倉換子
• 2぀のモナドを合成するためのもの
• 䟋えばStateモナドの堎合
 – StateT s m a
    • モナド倉換子版Stateモナド
    • State s a ず比べお、mずいうパラメヌタが远加
    • mに合成したいモナドを代入
 – StateT s IO a
    • IOモナドを内包したStateモナド
    • IOモナドの操䜜ずStateモナドの操䜜が䞡方できる
持ち䞊げ(lift)
• StateT s IO の䟋




  – StateT s IO の䞭でIOを行うには、持ち䞊げ(lift)
    を行う必芁がある型が合わないので
モナドクラス
• 䟋えばIOを行うだけの蚈算

• これは、StateT s IO 以倖のモナドでも䜿え
  お欲しい
 – ErrorT err IO
 – ReaderT s IO
 –

MonadIOクラス
• そのために、IOをliftできるクラス党䜓を抜象
  化したMonadIOクラスを定矩


• 先のコヌドは次のような型に


• StateT s IO などをMonadIOの゗ンスタンスに
  すれば䜿甚可胜に。
䞀般の持ち䞊げ
• モナド倉換子に枡されるモナドはIOだけで
  はない
 – ネストする堎合もある
• 䞀般ケヌスのために、MonadTransずいう
  クラスが甚意されおいる


 – 内偎のモナド倖偎のモナドに持ち䞊げるこず
   ができる
䞭盀たずめ
• モナドずは >>= ず return の2぀の挔算が定
  矩されたもの
• 暙準デヌタ型の倚くのものがモナドに
  なっおいる
• mtlずいうモナド倉換子ラ゗ブラリがある
• モナド倉換子を甚いおモナドを組み合わ
  せる
• モナド持ち䞊げで型の異なるモナドを匵
  り合わせる
Advanced Topics
monad-control (1)
• liftの逆をするもの
• 動機
 – Haskellの䟋倖ハンドリング機構はIOモナド
   ベヌス
 – 枡せるものがIO固定
   • MonadIO に察しおも䟋倖ハンドルしたい
monad-control (2)
• MonadIOに察しお䞀般化




• それを行えるようにするために、
  MonadControlIOずいうクラスを甚意
モナドいろいろ
• 近幎実に様々なラ゗ブラリがモナデゖッ
  クラ゗ブラリずしお提䟛されるようにな
  りたした
• それらの䞀郚を玹介しおいきたいず思い
  たす
MonadPar
• 䞊列蚈算を蚘述するためのモナド
 – `par`, `seq` などをモナド化したもの
Parser
• パヌザいろいろ
 – Parsec, Attoparsec, trifecta
WebApp
• WAI, Yesod, Snap, CGI, 

Interpreter
• hint, BASIC, 

How to design your monads

モナドの䜜り方
モナドを蚭蚈するにあたっお
• 自分のラ゗ブラリが、モナドずしお抜象
  化できるこずに気づいたずしたす
• しかし、モナドの䜜り方を間違うず、非
  垞に䜿い勝手の悪いものができおしたい
  たす
 – 䜿い勝手のよいモナドの実装には気を぀ける
   べきこずが沢山ありたす
• ここたで玹介したこずはすべお理解しお
  おくこずが望たしいです
1) 既存のモナドが利甚できないか

• 実際のずころ、mtlに含たれるモナドで、
  ほずんどのケヌスはカバヌされたす
• 䜜りたい蚈算が、mtlにあるモナドの組み
  合わせで実珟できないかたず怜蚎するべ
  きです
2) モナド倉換子版を甚意する
• いざモナドを䜜るずなったら、(原理的に)
  可胜なのであれば、モナド倉換子版を必
  ず甚意したしょう
 – モナド倉換子にはHogeTず、末尟に倧文字Tを
   ぀けるのが慣習です
• 非モナド倉換子版は、モナド倉換子版に
  Identityモナドを代入したものにしたす
 – 実装を重耇させおはいけたせん
MonadIOクラスの゗ンスタンスにする

• あなたのモナドをMonadIOの゗ンスタンス
  にしおおくのはずおも良いこずです
• あなたのモナドを利甚するすべおの堎所
  でIOを行うこずができるようになりたす
• MonadIOを甚意しおおくのはモナドによっ
  おIOを行うHaskellにずっおは極めお重芁な
  こずです
※ IOモナドに぀いお(1)
• IOモナドは、Haskellのプログラムの䞭では倖
  すこずのできないモナドです
 – unsafePerformIO などを陀いお
• その結果、IOを呌ぶコヌドはそれ自身がIOを
  行わなくおも、IOモナドにする必芁がありた
  す
• Haskellによくある批刀ずしお、たずもなプロ
  グラムを曞いおいるずほずんどすべおの関数
  の型がIOになる、ずいうのがありたす
 – IOモナドは感染するずか蚀われたす
※ IOモナドに぀いお(2)
• そこでMonadIOの出番です
• IOが必芁なコンテクストに぀いおのみ、
  MonadIOを芁求させおおけば良くなりたす
• Pureなモナドに関しおは、具䜓的な型が決
  定するに埓っお、自動で持ち䞊げられる
  こずになりたす
• ぀たり、PureなコヌドずIOのコヌドのオヌ
  バヌロヌドが可胜になるずいうこずです
3) MonadControlIOの
      ゗ンスタンスにする
• あなたのモナドが䟋倖を正しく扱えるよ
  うにするために、MonadControlIOの゗ンス
  タンスにしたしょう
 – これがないず bracket などが正しく埌凊理でき
   たせん
4) MonadTransの゗ンスタンスにする
• あなたのモナド倉換子が、他のモナドを
  自動倚段持ち䞊げ可胜になるように(可胜
  であれば)必ず、MonadTransの゗ンスタン
  スにしたしょう
5) Functor, Applicative
         の゗ンスタンスにする
• Applicativeスタ゗ルずいうものがありたす
 – http://d.hatena.ne.jp/kazu-yamamoto/20101211/1292021817
 – などを参照

• あなたのモナドをFunctor, Applicativeの゗
  ンスタンスにするず、䜿い勝手が倧幅に
  向䞊したす
• 必ずこれらの゗ンスタンスにしたしょう
 – Monadの゗ンスタンスは必ずFunctor及び
   Applicativeの゗ンスタンスにできたす
6) 必芁に応じお、その他
• その他のモナドクラスの゗ンスタンスに
  したす
 – ゚ラヌハンドリングを付けたいなら、
   MonadError
 – 倱敗に察する代替を䞎えたいずきには、
   Alternative
※ Alternativeクラスに぀いお
• m1 <|> m2 なる挔算子が定矩されおいる
• m1が倱敗したずき、m2の結果

• Alternativeの任意の゗ンスタンスに察しお
 – many p – pを倱敗するたで繰り返し
 – some p – pを倱敗するたで1回以䞊繰り返し
 – optional p – p が倱敗したらNothing成功したら
   Just aを返す
 – これらを定矩するこずができる
GenericNewtypeDeriving
• 自分のモナドをこれらすべおの゗ンスタ
  ンスにするのは骚の折れる䜜業です
• モナドがnewtypeの時、これをderiving で
  枈たせるこずができたす
 – -XGenericNewtypeDeriving 蚀語拡匵
埌半たずめ
• モナドを䜜るにあたっお
 – MTLのモナドの組み合わせで実珟できないか
   考える
 – いろいろなクラスの゗ンスタンスにしおおく
 – モナド以倖の有甚なクラスが暙準にあるので
   それの゗ンスタンスにもする

More Related Content

What's hot

プログラミングコンテストでの動的蚈画法
プログラミングコンテストでの動的蚈画法プログラミングコンテストでの動的蚈画法
プログラミングコンテストでの動的蚈画法
Takuya Akiba
 
Haskell Day2012 - 参照透過性ずは䜕だったのか
Haskell Day2012 - 参照透過性ずは䜕だったのかHaskell Day2012 - 参照透過性ずは䜕だったのか
Haskell Day2012 - 参照透過性ずは䜕だったのか
Kousuke Ruichi
 
オブゞェクト指向できおいたすか
オブゞェクト指向できおいたすかオブゞェクト指向できおいたすか
オブゞェクト指向できおいたすか
Moriharu Ohzu
 
Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜
Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜
Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜
Preferred Networks
 

What's hot (20)

自動定理蚌明の玹介
自動定理蚌明の玹介自動定理蚌明の玹介
自動定理蚌明の玹介
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
クロヌゞャデザむンパタヌン
クロヌゞャデザむンパタヌンクロヌゞャデザむンパタヌン
クロヌゞャデザむンパタヌン
 
Re氞続デヌタ構造が分からない人のためのスラむド
Re氞続デヌタ構造が分からない人のためのスラむドRe氞続デヌタ構造が分からない人のためのスラむド
Re氞続デヌタ構造が分からない人のためのスラむド
 
プログラミングコンテストでの動的蚈画法
プログラミングコンテストでの動的蚈画法プログラミングコンテストでの動的蚈画法
プログラミングコンテストでの動的蚈画法
 
圏論のモナドずHaskellのモナド
圏論のモナドずHaskellのモナド圏論のモナドずHaskellのモナド
圏論のモナドずHaskellのモナド
 
RSA暗号運甚でやっおはいけない n のこず #ssmjp
RSA暗号運甚でやっおはいけない n のこず #ssmjpRSA暗号運甚でやっおはいけない n のこず #ssmjp
RSA暗号運甚でやっおはいけない n のこず #ssmjp
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
圏論ずHaskellは仲良し
圏論ずHaskellは仲良し圏論ずHaskellは仲良し
圏論ずHaskellは仲良し
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Haskell Day2012 - 参照透過性ずは䜕だったのか
Haskell Day2012 - 参照透過性ずは䜕だったのかHaskell Day2012 - 参照透過性ずは䜕だったのか
Haskell Day2012 - 参照透過性ずは䜕だったのか
 
オブゞェクト指向できおいたすか
オブゞェクト指向できおいたすかオブゞェクト指向できおいたすか
オブゞェクト指向できおいたすか
 
マヌクスむヌプ勉匷䌚
マヌクスむヌプ勉匷䌚マヌクスむヌプ勉匷䌚
マヌクスむヌプ勉匷䌚
 
型安党性入門
型安党性入門型安党性入門
型安党性入門
 
䞭女子が狂える本圓に気持ちのいい constexpr
䞭女子が狂える本圓に気持ちのいい constexpr䞭女子が狂える本圓に気持ちのいい constexpr
䞭女子が狂える本圓に気持ちのいい constexpr
 
CEDEC 2018 最速のC#の曞き方 - C#倧統䞀理論ぞ向けお性胜的課題を払拭する
CEDEC 2018 最速のC#の曞き方 - C#倧統䞀理論ぞ向けお性胜的課題を払拭するCEDEC 2018 最速のC#の曞き方 - C#倧統䞀理論ぞ向けお性胜的課題を払拭する
CEDEC 2018 最速のC#の曞き方 - C#倧統䞀理論ぞ向けお性胜的課題を払拭する
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
蚌明プログラミング超入門
蚌明プログラミング超入門蚌明プログラミング超入門
蚌明プログラミング超入門
 
Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜
Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜
Pythonの理解を詊みる 〜バむトコヌドむンタプリタを䜜成する〜
 

Similar to Monad tutorial

iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
オブゞェクト指向開発におけるObject-Functional Programming
オブゞェクト指向開発におけるObject-Functional Programmingオブゞェクト指向開発におけるObject-Functional Programming
オブゞェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚
2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚
2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚
Yasuhiko Iwase
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
 
PFPファシグラ2009/07/03
PFPファシグラ2009/07/03PFPファシグラ2009/07/03
PFPファシグラ2009/07/03
nishikawa_makoto7
 
NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告
Hiroyuki TOKUNAGA
 

Similar to Monad tutorial (20)

An engineer uses monads
An engineer uses monadsAn engineer uses monads
An engineer uses monads
 
Mplusの䜿い方 初玚線
Mplusの䜿い方 初玚線Mplusの䜿い方 初玚線
Mplusの䜿い方 初玚線
 
すごいMonad入門
すごいMonad入門すごいMonad入門
すごいMonad入門
 
モゞュヌルの凝集床・結合床・むンタフェヌス
モゞュヌルの凝集床・結合床・むンタフェヌスモゞュヌルの凝集床・結合床・むンタフェヌス
モゞュヌルの凝集床・結合床・むンタフェヌス
 
Scrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pubScrum alliance regional gathering tokyo 2013 pub
Scrum alliance regional gathering tokyo 2013 pub
 
Oss coding style
Oss coding styleOss coding style
Oss coding style
 
Eclipse xtext 玹介
Eclipse xtext 玹介Eclipse xtext 玹介
Eclipse xtext 玹介
 
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
 
Movable Type for AWS を甚いた環境構築のポむント
Movable Type for AWS を甚いた環境構築のポむントMovable Type for AWS を甚いた環境構築のポむント
Movable Type for AWS を甚いた環境構築のポむント
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
Xtext And Grails20091218
Xtext And Grails20091218Xtext And Grails20091218
Xtext And Grails20091218
 
オブゞェクト指向開発におけるObject-Functional Programming
オブゞェクト指向開発におけるObject-Functional Programmingオブゞェクト指向開発におけるObject-Functional Programming
オブゞェクト指向開発におけるObject-Functional Programming
 
2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚
2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚
2019-04-17 「䞍適切コンテンツ怜出」の機械化ず安定運甚
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
PFPファシグラ2009/07/03
PFPファシグラ2009/07/03PFPファシグラ2009/07/03
PFPファシグラ2009/07/03
 
ニュヌラル機械翻蚳の動向@IBIS2017
ニュヌラル機械翻蚳の動向@IBIS2017ニュヌラル機械翻蚳の動向@IBIS2017
ニュヌラル機械翻蚳の動向@IBIS2017
 
Object-Functional Analysis and Design and Programming枩泉
Object-Functional Analysis and Design and Programming枩泉Object-Functional Analysis and Design and Programming枩泉
Object-Functional Analysis and Design and Programming枩泉
 
NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告NLP若手の回 ACL2012参加報告
NLP若手の回 ACL2012参加報告
 
良い悪いコヌドコメントの曞き方
良い悪いコヌドコメントの曞き方良い悪いコヌドコメントの曞き方
良い悪いコヌドコメントの曞き方
 
jQueryの先に行こう最先端のWeb開発トレンドを孊ぶ
jQueryの先に行こう最先端のWeb開発トレンドを孊ぶjQueryの先に行こう最先端のWeb開発トレンドを孊ぶ
jQueryの先に行こう最先端のWeb開発トレンドを孊ぶ
 

More from Hideyuki Tanaka (7)

ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
 
Xpath in-lens
Xpath in-lensXpath in-lens
Xpath in-lens
 
IdrisでWebアプリを曞く
IdrisでWebアプリを曞くIdrisでWebアプリを曞く
IdrisでWebアプリを曞く
 
手曞きスラむド
手曞きスラむド手曞きスラむド
手曞きスラむド
 
Yesod勉匷䌚
Yesod勉匷䌚Yesod勉匷䌚
Yesod勉匷䌚
 
C++コミュニティヌの䞭心でC++をDISる
C++コミュニティヌの䞭心でC++をDISるC++コミュニティヌの䞭心でC++をDISる
C++コミュニティヌの䞭心でC++をDISる
 
Icfp2009
Icfp2009Icfp2009
Icfp2009
 

Recently uploaded

知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx
知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx
知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx
sn679259
 

Recently uploaded (12)

知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx
知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx
知識れロの営業マンでもできた超速で初心者を脱する、悪魔的孊習ステップ3遞.pptx
 
Observabilityは埓来型の監芖ず䜕が違うのかキンドリルゞャパン瀟内勉匷䌚2022幎10月27日発衚
Observabilityは埓来型の監芖ず䜕が違うのかキンドリルゞャパン瀟内勉匷䌚2022幎10月27日発衚Observabilityは埓来型の監芖ず䜕が違うのかキンドリルゞャパン瀟内勉匷䌚2022幎10月27日発衚
Observabilityは埓来型の監芖ず䜕が違うのかキンドリルゞャパン瀟内勉匷䌚2022幎10月27日発衚
 
NewSQLの可甚性構成パタヌンOCHaCafe Season 8 #4 発衚資料
NewSQLの可甚性構成パタヌンOCHaCafe Season 8 #4 発衚資料NewSQLの可甚性構成パタヌンOCHaCafe Season 8 #4 発衚資料
NewSQLの可甚性構成パタヌンOCHaCafe Season 8 #4 発衚資料
 
新人研修 埌半 2024/04/26の勉匷䌚で発衚されたものです。
新人研修 埌半        2024/04/26の勉匷䌚で発衚されたものです。新人研修 埌半        2024/04/26の勉匷䌚で発衚されたものです。
新人研修 埌半 2024/04/26の勉匷䌚で発衚されたものです。
 
論文玹介Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文玹介Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文玹介Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文玹介Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文玹介Selective Structured State-Spaces for Long-Form Video Understanding
論文玹介Selective Structured State-Spaces for Long-Form Video Understanding論文玹介Selective Structured State-Spaces for Long-Form Video Understanding
論文玹介Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマヌト距離怜出センサヌ DS20L カタログ LiDARデバむス
LoRaWANスマヌト距離怜出センサヌ  DS20L  カタログ  LiDARデバむスLoRaWANスマヌト距離怜出センサヌ  DS20L  カタログ  LiDARデバむス
LoRaWANスマヌト距離怜出センサヌ DS20L カタログ LiDARデバむス
 
Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。
Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。
Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。
 
Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。
Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。
Amazon SES を勉匷しおみる その2024/04/26の勉匷䌚で発衚されたものです。
 
論文玹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文玹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文玹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文玹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマヌト距離怜出デバむスDS20L日本語マニュアル
LoRaWAN スマヌト距離怜出デバむスDS20L日本語マニュアルLoRaWAN スマヌト距離怜出デバむスDS20L日本語マニュアル
LoRaWAN スマヌト距離怜出デバむスDS20L日本語マニュアル
 

Monad tutorial