Submit Search
Upload
すごいMonad入門
•
1 like
•
2,186 views
真一 北原
Follow
第4回 #LT駆動 の発表スライドです
Read less
Read more
Technology
Report
Share
Report
Share
1 of 16
Download now
Download to read offline
Recommended
Monad tutorial
Monad tutorial
Hideyuki Tanaka
Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
Start!! Ruby
Start!! Ruby
mitim
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
Mikiya Okuno
関数型プログラミングとモナド
関数型プログラミングとモナド
Masayuki Isobe
モナモナ言うモナド入門
モナモナ言うモナド入門
Masahiro Honma
null使ったら負け福岡版
null使ったら負け福岡版
なおき きしだ
Recommended
Monad tutorial
Monad tutorial
Hideyuki Tanaka
Haskell Day2012 - 参照透過性とは何だったのか
Haskell Day2012 - 参照透過性とは何だったのか
Kousuke Ruichi
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
Start!! Ruby
Start!! Ruby
mitim
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
Mikiya Okuno
関数型プログラミングとモナド
関数型プログラミングとモナド
Masayuki Isobe
モナモナ言うモナド入門
モナモナ言うモナド入門
Masahiro Honma
null使ったら負け福岡版
null使ったら負け福岡版
なおき きしだ
循環参照のはなし
循環参照のはなし
Masahiro Honma
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Masahiro Sakai
Nullのはなし(up用)
Nullのはなし(up用)
Souki Tanaka
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
parrotstudio
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
tadaaki hayashi
たのしい高階関数
たのしい高階関数
Shinichi Kozake
圏とHaskellの型
圏とHaskellの型
KinebuchiTomo
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
Database.persistentの話
Database.persistentの話
真一 北原
能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発
真一 北原
型! 型!
型! 型!
真一 北原
型!
型!
真一 北原
templateを依存型っぽく使ってみる
templateを依存型っぽく使ってみる
真一 北原
すごいCoq入門
すごいCoq入門
真一 北原
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた
真一 北原
Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果
真一 北原
More Related Content
Viewers also liked
循環参照のはなし
循環参照のはなし
Masahiro Honma
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Masahiro Sakai
Nullのはなし(up用)
Nullのはなし(up用)
Souki Tanaka
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
parrotstudio
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
tadaaki hayashi
たのしい高階関数
たのしい高階関数
Shinichi Kozake
圏とHaskellの型
圏とHaskellの型
KinebuchiTomo
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
Viewers also liked
(14)
循環参照のはなし
循環参照のはなし
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Nullのはなし(up用)
Nullのはなし(up用)
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
たのしい高階関数
たのしい高階関数
圏とHaskellの型
圏とHaskellの型
関数プログラミング入門
関数プログラミング入門
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
More from 真一 北原
Database.persistentの話
Database.persistentの話
真一 北原
能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発
真一 北原
型! 型!
型! 型!
真一 北原
型!
型!
真一 北原
templateを依存型っぽく使ってみる
templateを依存型っぽく使ってみる
真一 北原
すごいCoq入門
すごいCoq入門
真一 北原
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた
真一 北原
Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果
真一 北原
型安全Printf作ってみた
型安全Printf作ってみた
真一 北原
能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた
真一 北原
第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料
真一 北原
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
真一 北原
More from 真一 北原
(12)
Database.persistentの話
Database.persistentの話
能年玲奈ちゃん駆動開発
能年玲奈ちゃん駆動開発
型! 型!
型! 型!
型!
型!
templateを依存型っぽく使ってみる
templateを依存型っぽく使ってみる
すごいCoq入門
すごいCoq入門
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 サイト運営してみた結果
Lt駆動開発03 サイト運営してみた結果
型安全Printf作ってみた
型安全Printf作ってみた
能年玲奈ちゃんのファンとして本気を出してみた
能年玲奈ちゃんのファンとして本気を出してみた
第2回 mix c++勉強会@tokyo 資料
第2回 mix c++勉強会@tokyo 資料
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
Recently uploaded
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Recently uploaded
(11)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
すごいMonad入門
1.
すごいMonad入門 #LT駆動 2014/06/07 @minamiyama1994
2.
今日の流れ ● 自己紹介 ● Monadとはどんなものか ●
Monadはどのように使えるのか ● まとめ ● 質疑応答
3.
自己紹介 ● (ry
4.
Monadとはどんなものか ● Haskellなどにある汎用的な抽象化機構 ● 自己関手の圏におけるモノイド対象 ○
わからん ● 圏論とか関係あるらしい、よく知らない ● 使えればおk ● 簡単にいえば「特定の文脈の中で値を取り扱う ための抽象化」
5.
Monadとはどんなものか ● 今日はHaskellのMonadについて説明します
6.
Monadとはどんなものか ● IO Monad ○
副作用が起こりうると言う文脈 ● Maybe Monad ○ 値がないかもしれないという文脈 ● Either e Monad ○ 正常値以外の値があるかもしれないという文脈 ● リスト Monad ○ 0個以上の値があるという文脈
7.
Monadはどのように使えるのか ● returnを使って普通の値をMonadに包むことが できる ● 逆にMonadから値を取り出すことは? ○
→一般的には出来ない ● でも、中の値を元に計算したい ● なおかつ、内部実装はできるだけ見たくない
8.
Monadはどのように使えるのか ● 内部の値にアクセスする方法はMonad側で用 意 ○ ユーザ側は具体的なアクセス方法を知らなくても抽象化 された方法で内部の値にアクセスできる ●
>>=演算子 ○ 左辺にMonadに包まれた値 ○ 右辺にMonadに包まれた値を元に計算する関数 ● 内部実装を気にしなくていい!
9.
Monadはどのように使えるのか ● return ○ モナドの文脈で普通の値を扱えるように変換する ●
>>= ○ モナドの文脈にくるまれた値を普通の関数に食わせる ● >> ○ 左辺の文脈を踏まえた上で右辺を返す ● do ○ 上記の演算子などを用いたシンタックスシュガー
10.
Monadはどのように使えるのか ● 基本的に使うのはdo,return,>>=,>> ● return,>>=,>>だけを組み合わせて書くこともで きる ○
ちょっと読みにくいことがある ● doを使えば手続き的に書ける ○ 直感的
11.
Monadはどのように使えるのか ● コード例 main ::
IO ( ) main = getLine >>= x -> putStrLn ( x ++ “さん こんにちは!” )
12.
Monadはどのように使えるのか ● コード例 main ::
IO ( ) main = do x <- getLine putStrLn ( x ++ “さんこんにちは!” )
13.
Monadはどのように使えるのか ● Monadのユーザに直感的な記法を与えること ができるので、DSL作成などに活用できる ○ YesodのHandlerなど多くのライブラリがMonadを活用 ●
内部実装を抽象化したままユーザにデータを操 作させることができる
14.
Monadはどのように使えるのか ● モナドの使い方は分かった、作り方は? ○ 知らん ●
Monad則というのを満たしていればいいらしい ● Free MonadとかOperational Monadとかある ので直接つくる必要性はあまりないかも ● 大体やりたいことは既にライブラリとしてあった りするので使えれば大体なんとかなる
15.
まとめ ● モナド便利です、使えるようになりましょう ● これであなたもHaskeller![要出典] ●
コードはGistとGithubにあります ○ https://gist.github. com/minamiyama1994/652f5331d71a38d 169ff ○ https://github. com/minamiyama1994/LTDD/tree/04
16.
時間があれば質疑応答に入ります ご清聴 ありがとうございました
Download now