More Related Content
PDF
PDF
PDF
PDF
PDF
PDF
PsychoPy Builder:モジュールの組み込みと視線計測 PDF
(文献紹介)エッジ保存フィルタ:Side Window Filter, Curvature Filter PDF
What's hot
PDF
cvpaper.challenge 研究効率化 Tips PDF
PPTX
for関数を使った繰り返し処理によるヒストグラムの一括出力 PDF
PDF
最近のDeep Learning (NLP) 界隈におけるAttention事情 PPTX
PPTX
PSR-1 と PSR-2 を5分でざっくり理解する PDF
PDF
PDF
PDF
PDF
Contrastive learning 20200607 PPTX
[自己PR]12/23 エンジニア"1on1"面談会 PPTX
PDF
PDF
PDF
深層強化学習の self-playで、複雑な行動を機械に学習させたい! PDF
PDF
ODP
Similar to 関数型プログラミングとモナド
PDF
PDF
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14) PDF
PPTX
PDF
PDF
TypeScript & 関数型講座 第3回 関数型入門 PDF
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】 PDF
オブジェクト指向開発におけるObject-Functional Programming PDF
PDF
KEY
PDF
Object-Functional Analysis and Design and Programming温泉 PDF
PDF
PDF
PDF
関数型都市忘年会『はじめての函数型プログラミング』 PDF
これからの「言語」の話をしよう ―― 未来を生きるためのツール PDF
PDF
PDF
More from Masayuki Isobe
PDF
ScrapyとPhantomJSを用いたスクレイピングDSL PDF
RDF/OWLの概要及びOSS実装、及び活用イメージについて PDF
PDF
PPTX
CasperJSを使って任意のWebサイトを電子書籍化する方法 PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PDF
Rec sys2013 reading_isobe PDF
オープンソースを用いたドローンの自律制御ソフトウェア技術 PDF
PPTX
TEDxTitech 2013 speech material PDF
AIBOX DroneBrain 製品パンフレット PDF
PDF
第三回機械学習アルゴリズム実装会イントロダクション Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector PDF
さくらインターネットの今 法林リージョン:さくらのAIとか GPUとかイベントとか 〜2026年もバク進します!〜 PPTX
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
関数型プログラミングとモナド
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
合成手段の例
• 演算の合成
– y= f(x), z=g(y) ⇨ z = (f ○ g)(x)
• 繰り返し適用
– z = fold(3,f,x) ⇨ z = f(f(f(x)))
– z = map(f,[x,y,z]) ⇨ z = [f(x),f(y),f(z)]
• ちなみに分解手段もある(例:カリー化)
– z = f(x,y) ⇨ z = fc(x)(y)
⇨ 「演算」と「合成・分解手段(=高階関数)」
によって割と自由にプログラミングできる!
- 7.
- 8.
多相データ型 と 型クラス
・多相データ型:コンテナ型のようなもの。Enumのような定数値も含む。
単純な例) リスト a
aにはintとかfloatとかcharとか、あるいはリストのリストならば 「a = リスト b」となる。
再帰構造の例) 2分木ツリー a
aの型を要素に持つ2分木ツリーコンテナのようなもの。
雑多な例) くじ引き型 a b
aは当選商品のEnum型、bはハズレくじを集めて再チャンス応募の商品のEnum型
・型クラス: 通常のデータ型や多相データ型に対して、適用可能な関数を
保証する型
例) 合計を計算できる型クラス(CanTotal)というのを定義してみる
クラス CanTotal
定義:
関数 total(x) を持つこと
- 9.
型クラスのインスタンスによるオーバーロード
入力(x)
リスト total(x,y) 二分木total(x) 他 total(x)
total(x) ⇨ 選択機構
・型クラスのインスタンス: あるデータ型(基本型 or データ多相型)がその
型クラスが規定する関数の定義を持つこと
例1) リスト a 型はCanTotal型クラスのインスタンスであると定義できる。
定義: 引数xをリストa型のデータとしたとき、
total(x) = xに含まれるa型の要素を合計する
例2) 二分木a型はCanTotal型クラスのインスタンスであると定義できる。
定義: 引数xを二分木a型のデータとしたとき、
total(x) = xに含まれるa型の要素を合計する
⇨ これで、totalという関数は、上図のように選択機構がうまく働く。
(オーバーロード または アドホック多相 と呼ぶ)
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.