関数型プログラミング入門 for Matlab ユーザー

関数型プログラミング入門
for Matlabユーザー
丸田 一郎
アメリカで滞在していた研究室にて…
学生「何か手っ取り早くプログラミングが上達する
チュートリアルやってくださいよ」
○「Functional Programming とかどう?」
学生「Function ならみんな知ってますよ~
他のネタがいいです」
○「(これは教えがいがありそうやで…)」
という感じのいきさつで,一晩で準備したスライドの
日本語訳がこれです.過度な期待はしないでください.
このチュートリアルのねらい
対象
• Matlab初級者の大学生/大学院生/研究者
目標
• 関数型プログラミングをちょろっと勉強して
日々のコーディングを効率的にする
関数型プログラミング(FP)って何?
「関数を組み合わせて処理を記述する」
プログラミングパラダイムです
このチュートリアルでは,
「関数を組み合わせて処理を記述する」
うえで有用な機能・テクニックと,その
メリットについて例を挙げて説明します.
最初のトピックは「無名関数」です
そもそも無名関数(とかFP)って
勉強する価値あるの?
高確率でペイすると思います
その根拠は…
Q
A
To Be Continued
メジャー&保守的な言語 偉大な祖先
1958 Lisp
1967 Simula
1972 C
1983 C++
1995 ⋮ Java
2011 C++11 ⋮
2014 C++14 Java 8
クラスの導入
(オブジェクト指向)
無名関数の導入
(関数型プログラミング)
C++ と Java が無名関数を最近導入
関数型プログラミングの鍵となる機能
• C++ と Java が無名関数を最近導入
• 他の人気言語はとっくの昔に導入
• 他の関数型プログラミング由来の機能を
取り入れる言語も多い
無名関数(関数型プログラミング)の有用
性は広く認められていると考えられる
というわけで,無名関数の
使用例をみてみよう!
ここで考える例題
𝑦𝑦 = 𝑓𝑓 𝑥𝑥 = 𝑥𝑥3
− 𝑥𝑥 のグラフを
−1.2 ≤ 𝑥𝑥 ≤ 1.2の範囲で描け!
𝑥𝑥
𝑦𝑦
𝑦𝑦 = 𝑓𝑓(𝑥𝑥)
←たぶんこんな感じ
To Be Continued
-1 -0.5 0 0.5 1
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
x = -1.2:0.02:1.2; → x=[-1.20, -1.18,…, 1.20]
y = x.^3 - x; → y=[-0.53, -0.46,…, 0.53]
plot( x, y) → 配列のデータから描画
Matlabでグラフを描く普通のやり方
x = first:step:last
firstから始まってstep刻みで
lastまで続く配列(ベクトル)
ができます
y = x.^3 - x
.^は要素ごとにべき乗を行う演算
子です.減算はデフォルトでベク
トルに対応しています.
Matlab を知らない人に…
-1 -0.5 0 0.5 1
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
無名関数を使う例
f = @(x) x^3 - x; % fは関数
xrng = [-1.2, 1.2]; % 描画範囲の[下限,上限]
fplot(f,xrng) % 関数と範囲指定から描画
@(x) x^3 - x
Matlab の無名関数
x の関数 返り値は
𝑥𝑥3 − 𝑥𝑥
という構文です
f = @(x) x^3 - x;
fplot(f, xrng)
A 一行で書くとわかりやすいかも
f なんていらんかったんや!
Q どこが無名なの?
fplot( @(x) x^3-x, xrng)
名前っぽくね?
パッと見は些末な機能…
だけど関数型プログラミングの鍵
高階関数を使うときに超便利だから
無名関数 = 🍜🍜 即席で作れる使い捨ての関数
fplot( @(x) x^3-x, xrng)
なんで?
To Be Continued
高階関数とは?
引数 → 返り値
関数
function
Data → Data
高階関数
higher order function
Function → Data
Data → Function
Function → Function
汎関数
functional
※ 数学ではこのクラスを
特に functional と呼ぶが,
functional programming の
由来では無いっぽい
Function → Data
関数型プログラミングでは高階関数を駆使する
引数
plot( x, y) Data
fplot( f, xrng) Function
高階関数を使うとハイレベルなアルゴリズムを
容易に使いまわすことができる
⇒ fplot が如何にハイレベルか見てみよう
←高階関数
高階関数の例
←ただの関数
-1 -0.5 0 0.5 1
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
ただの関数 plot(x,y) の結果(拡大)
16
まぁ普通ですね
-1 -0.5 0 0.5 1
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
高階関数 fplot(f,xrng) の結果(拡大)
17
疎
密
適応ステップ!
18
描画する関数 f の形状に応じて適応的に
ステップ幅を調節しながらプロットする
fplot(f,xrng)
高階関数として実装することで,そ
こそこ高度なアルゴリズムを簡単か
つ自然に使いまわせている点に注目
まとめ (3/5)
関数型プログラミング
 関数を組み合わせて処理を記述するプログラミング
パラダイム
無名関数
 即席で作れる使い捨ての関数
高階関数
 引数や返値として関数をとる関数
 高度なアルゴリズムを再利用容易な形で実装する際
に便利 New
一見地味な無名関数だが
高階関数を使う上では必要不可欠
例題を通して確認
To Be Continued
例題 マサチューセッツ湾交通局(MBTA)提供
リアルタイムデータの可視化
バス・電車の位置情報を
リアルタイムで提供!
車両位置可視化プログラムを作りたい
MBTAからの
データ取得・解釈
かっこいい可視化
• ややこしい
• 面倒くさい
• 誰が作っても一緒
プログラムを2つの関数に分ける
ことにしてみよう
• かっこいい
• 個性を発揮できる部分
parse_mbta_feed(visualizer)
MBTAからのデータ取得・解釈部分
⇒ データの取得と解釈を行う
高階関数として実装
MBTAのサーバーにアクセスし
車両情報 (車両ID,x座標,y座標) を取得する度に,
引数で指定された関数 visualizer(id,x,y) を呼び出す.
id x y
Green-E 234222.4 899242.8
Orange 231959.8 894831.3
Orange 231900.0 894700.1
Red 240703.5 889367.2
:
parse_mbta_feed(...
@(id,x,y) fprintf('%st%ft%fn',id,x,y));
🍜🍜 文字列で出力する可視化関数
可視化その1 ターミナルに文字列でテスト出力
ボストンの地下鉄は
Red Line, Blue Line…
と色で呼ばれている
ちなみにバスには番号が
振られている
↓実行結果
退屈な部分の動作を確認!
1
1
1
10
11
111
39
39
504 55
60
608
69
7
742
749
749
751
88
9
92
93
Blue
CR-Fairmount
CR-FitchburgCR-Lowell
Green-B
Green-B
Green-B
n-B
Green-B
Green-C
Green-C
Green-C
Green-C
Green-D
Green-D
Green-D
Green-D
Green-D
Green-E
Green-E
Green-E
Green-E
Green-E
Orange
Orange
Orange
Red
Red
Red
可視化その2 地図上にテスト出力
parse_mbta_feed(...
@(id,x,y) text( x, y, id, 'Color', [1,1,1]));
🍜🍜グラフィカルな可視化関数,車両位置にIDを表示
1
1
1
10
11
111
111
43
504
55
608
65
9
70
70
741
749
751
83
88
9
92
93
BB
CR-Fitchburg
CR-Kingston
CR-Lowell
CR-Newburyport
CR-Providence
CR-Providence
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
O
O
O
O
R
R
R
可視化その3 本番用
parse_mbta_feed(@visualizer);
より手の込んだ可視化を実現する通常の関数ももちろん作れる
この例題の教訓
parse_mbta_feed(...
@(id,x,y) fprintf('%st%ft%fn',id,x,y));
fprintf と text は Matlab に元からある関数.
そのままで parse_mbta_feed() の引数として使え
るように設計されてはいない
無名関数を使うことで出来合いの関数を自作の
parse_mbta_feed() と簡単に組み合わせることが
できたのである!
parse_mbta_feed(...
@(id,x,y) text( x, y, id, 'Color', [1,1,1]));
ターミナルへの出力
地図への出力
まとめ (4/5)
関数型プログラミング
 関数を組み合わせて処理を記述するプログラミング
パラダイム
無名関数
 即席で作れる使い捨ての関数
 高階関数を組み合わせる際に便利
高階関数
 引数や返値として関数をとる関数
 高度なアルゴリズムを再利用容易な形で実装する際
に便利
New
引数 返り値
関数 Data Data
高階関数
Function Data
Data Function
Function Function
Q 関数を受け取って関数を返す関数とか
ほんとに要るんですか?
これ!
A 必要! 次の例で…
To Be Continued
高校生用の例 数値微分
とある関数の導関数がほしいけど計算するのがだるい
諸般の事情で得られないとき(最適化でよくある)
←微分の定義
←こんなもんでええやろ
(数値微分)
̇𝑓𝑓 𝑡𝑡 = lim
Δ𝑡𝑡→0
𝑓𝑓 𝑡𝑡 + Δ𝑡𝑡 − 𝑓𝑓 𝑡𝑡
Δ𝑡𝑡
≃
𝑓𝑓 𝑡𝑡 + 0.001 − 𝑓𝑓(𝑡𝑡)
0.001
ある関数 𝑓𝑓 が与えられたとき,
その導関数を返す高階関数を作ってみよう
dt = 0.001;
d = @(f) ( @(t) (f(t+dt)-f(t))/dt );
t の関数
…を返す f の関数
例 数値微分に基づいて与えられた関数の
導関数を生成する高階関数
f = @(t) sin(t);
fplot( d(f), [0,2*pi])
使用例 𝑓𝑓 𝑡𝑡 = sin(𝑡𝑡)の微分をプロット
当然 cos(𝑡𝑡) になる
f = @(t) sin(t);
fplot( d(d(f)), [0,2*pi])
使用例 𝑓𝑓 𝑡𝑡 = sin(𝑡𝑡)の2階微分をプロット
当然 −sin(𝑡𝑡) になる
f = @(t) sin(t);
fplot( d(d(d(f))), [0,2*pi])
使用例 𝑓𝑓 𝑡𝑡 = sin(𝑡𝑡)の3階微分をプロット
当然 −cos(𝑡𝑡) になる
f = @(t) sin(t);
fplot( d(d(d(d(f)))), [0,2*pi])
使用例 𝑓𝑓 𝑡𝑡 = sin(𝑡𝑡)の4階微分をプロット
当然 sin(𝑡𝑡) になる
f = @(t) sin(t);
fplot( d(d(d(d(d(f))))), [0,2*pi])
使用例 𝑓𝑓 𝑡𝑡 = sin(𝑡𝑡)の5階微分をプロット
当然 cos(𝑡𝑡) になる…とは限らない!
大学生用の宿題
• 5階微分の数値計算結果について論ぜよ
大学生用の例 常微分方程式の離散時間化
大抵の自然法則は常微分方程式で書かれている
ex. Van der Pole oscillator
̇𝑥𝑥1(𝑡𝑡)
̇𝑥𝑥2(𝑡𝑡)
=
𝑥𝑥2(𝑡𝑡)
1 − 𝑥𝑥1
2
𝑡𝑡 𝑥𝑥2 𝑡𝑡 − 𝑥𝑥1 𝑡𝑡
̇𝒙𝒙 𝑡𝑡 = 𝒇𝒇𝐂𝐂(𝒙𝒙 𝑡𝑡 )
でも差分方程式の方が扱いやすいこともある
𝒙𝒙 𝑘𝑘 + 1 ℎ = 𝒇𝒇𝐃𝐃 𝒙𝒙 𝑘𝑘ℎ
お手軽に変換 𝒇𝒇𝐂𝐂 → 𝒇𝒇𝐃𝐃 する方法があると便利!
( ℎ 時間刻み )
常微分方程式の離散化を行う高階関数
function [ fd ] = c2d_euler( fc, h )
function x_new = proto_fd(x)
x_new = x + h*fc(x);
end
fd = @proto_fd;
End
与えられた 𝑓𝑓C と ℎ に
基づいてオイラー法で
計算を行う関数を…
← 返す!
常微分方程式版の van der Pole oscillator
fc = @(x) [x(2); (1-x(1)^2)*x(2)-x(1)];
差分方程式版の生成
h = 0.2; % h:時間刻み
fd = c2d_euler(fc,h); % 簡単!
確認のために 𝒙𝒙(𝒕𝒕) の軌道を計算
N = 50; x = zeros(N,2);
x(1,:) = [2,0]; % 初期状態
for k=1:N-1
x(k+1,:) = fd(x(k,:)');
end 結果は次のスライド
使い方
0 2 4 6 8 10
t
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5x1
Continuous
Discrete誤差が大きい!
オイラー法はさすがに
安直すぎた模様
常微分方程式
̇𝒙𝒙 𝒕𝒕 = 𝒇𝒇𝐂𝐂 𝒙𝒙 𝒕𝒕
の解
得られた差分方程式
𝑥𝑥 𝑘𝑘 + 1 ℎ = 𝑓𝑓D 𝑥𝑥 𝑘𝑘ℎ
によって計算された軌道
大学生の常識 ルンゲ=クッタ法に基づく実装
function [ fd ] = c2d_rk4( fc, h )
function x_new = proto_fd(x)
k1 = fc(x);
k2 = fc(x+h/2*k1);
k3 = fc(x+h/2*k2);
k4 = fc(x+h*k3);
x_new = x + h/6*(k1+2*k2+2*k3+k4);
end
fd=@proto;
end
fd = c2d_rk4(fc,h);
% fd = c2d_euler(fc,h); ← 使い方は一緒
0 2 4 6 8 10
t
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
x1
Continuous
Discrete
完全に一致!
信頼と実績の
ルンゲ=クッタ法
離散化手法が高階関数として分離され
ているために,離散化手法の変更・修
正・比較が容易になっている
まとめ
関数型プログラミング
 関数を組み合わせて処理を記述するプログラミング
パラダイム
無名関数
 即席で作れる使い捨ての関数
 高階関数を組み合わせる際に便利
高階関数
 引数や返値として関数をとる関数
 高度なアルゴリズムを再利用容易な形で実装する際
に便利
To Be Continued第1部 今日から役立つFP / 完
Emphasized
第2部 関数の副作用と並列処理
1. map 高階関数と並列化
2. ループと再帰と並列化
3. reduce 高階関数と並列化
4. MapReduce
※ 準備期間が一晩だったので
第2部のスライドは準備が
間に合いませんでした
Special Thanks to
Robust Systems Lab
Northeastern University
1 of 46

Recommended

最適輸送入門 by
最適輸送入門最適輸送入門
最適輸送入門joisino
11.6K views88 slides
時系列予測にTransformerを使うのは有効か? by
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?Fumihiko Takahashi
7K views29 slides
数理最適化とPython by
数理最適化とPython数理最適化とPython
数理最適化とPythonYosuke Onoue
22.6K views49 slides
Transformer メタサーベイ by
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイcvpaper. challenge
27.4K views181 slides
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction by
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured PredictionDeep Learning JP
2.2K views26 slides
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料) by
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
275K views159 slides

More Related Content

What's hot

Active Learning 入門 by
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
51.8K views60 slides
機械学習 入門 by
機械学習 入門機械学習 入門
機械学習 入門Hayato Maki
18.4K views49 slides
モデル高速化百選 by
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
24.8K views64 slides
グラフニューラルネットワーク入門 by
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
51.5K views65 slides
強化学習 DQNからPPOまで by
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまでharmonylab
9.6K views45 slides
最近のディープラーニングのトレンド紹介_20200925 by
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925小川 雄太郎
9K views57 slides

What's hot(20)

Active Learning 入門 by Shuyo Nakatani
Active Learning 入門Active Learning 入門
Active Learning 入門
Shuyo Nakatani51.8K views
機械学習 入門 by Hayato Maki
機械学習 入門機械学習 入門
機械学習 入門
Hayato Maki18.4K views
モデル高速化百選 by Yusuke Uchida
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida24.8K views
グラフニューラルネットワーク入門 by ryosuke-kojima
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
ryosuke-kojima51.5K views
強化学習 DQNからPPOまで by harmonylab
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
harmonylab9.6K views
最近のディープラーニングのトレンド紹介_20200925 by 小川 雄太郎
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925
小川 雄太郎9K views
最適輸送の解き方 by joisino
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
joisino21.7K views
変分推論法(変分ベイズ法)(PRML第10章) by Takao Yamanaka
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
Takao Yamanaka30.5K views
数式をnumpyに落としこむコツ by Shuyo Nakatani
数式をnumpyに落としこむコツ数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Shuyo Nakatani31.8K views
近年のHierarchical Vision Transformer by Yusuke Uchida
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
Yusuke Uchida13.9K views
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演) by Shota Imai
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
Shota Imai2.3K views
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる− by Deep Learning JP
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
[DL輪読会]The Neural Process Family−Neural Processes関連の実装を読んで動かしてみる−
Deep Learning JP2.4K views
POMDP下での強化学習の基礎と応用 by Yasunori Ozaki
POMDP下での強化学習の基礎と応用POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
Yasunori Ozaki2.8K views
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary by Deep Learning JP
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
Deep Learning JP2.2K views
自己教師学習(Self-Supervised Learning) by cvpaper. challenge
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
cvpaper. challenge12.8K views
最適化超入門 by Takami Sato
最適化超入門最適化超入門
最適化超入門
Takami Sato174.8K views
分散学習のあれこれ~データパラレルからモデルパラレルまで~ by Hideki Tsunashima
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
Hideki Tsunashima4.3K views
【DL輪読会】Implicit Behavioral Cloning by Deep Learning JP
【DL輪読会】Implicit Behavioral Cloning【DL輪読会】Implicit Behavioral Cloning
【DL輪読会】Implicit Behavioral Cloning
Deep Learning JP922 views

Similar to 関数型プログラミング入門 for Matlab ユーザー

関数型都市忘年会『はじめての函数型プログラミング』 by
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』Kenta USAMI
2.2K views25 slides
F#によるFunctional Programming入門 by
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
3.6K views35 slides
Chainerの使い方と自然言語処理への応用 by
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
53.2K views40 slides
たのしい関数型 by
たのしい関数型たのしい関数型
たのしい関数型Shinichi Kozake
6.2K views94 slides
テンプレートメタプログラミング as 式 by
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式digitalghost
2K views17 slides
D言語にまだ入っていない新機能 (Dの日#2) by
D言語にまだ入っていない新機能 (Dの日#2)D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)tom-tan
4.2K views22 slides

Similar to 関数型プログラミング入門 for Matlab ユーザー(20)

関数型都市忘年会『はじめての函数型プログラミング』 by Kenta USAMI
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
Kenta USAMI2.2K views
F#によるFunctional Programming入門 by bleis tift
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift3.6K views
Chainerの使い方と自然言語処理への応用 by Seiya Tokui
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Seiya Tokui53.2K views
テンプレートメタプログラミング as 式 by digitalghost
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式
digitalghost2K views
D言語にまだ入っていない新機能 (Dの日#2) by tom-tan
D言語にまだ入っていない新機能 (Dの日#2)D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)
tom-tan4.2K views
Lisp tutorial for Pythonista : Day 2 by Ransui Iso
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso2.1K views
これからの「言語」の話をしよう ―― 未来を生きるためのツール by Nobuhisa Koizumi
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
Nobuhisa Koizumi1.3K views
命令プログラミングから関数プログラミングへ by Naoki Kitora
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
Naoki Kitora3.8K views
Replace Output Iterator and Extend Range JP by Akira Takahashi
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi1.6K views
Chainerの使い方と 自然言語処理への応用 by Yuya Unno
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用
Yuya Unno30.4K views
LastaFluteでKotlinをはじめよう by Shinsuke Sugaya
LastaFluteでKotlinをはじめようLastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya2.1K views
15分でざっくり分かるScala入門 by SatoYu1ro
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
SatoYu1ro20.8K views
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章 by YOSHIKAWA Ryota
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
YOSHIKAWA Ryota8.6K views
Ekmett勉強会発表資料 by 時響 逢坂
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂16.7K views
TensorflowとKerasによる深層学習のプログラム実装実践講座 by Ruo Ando
TensorflowとKerasによる深層学習のプログラム実装実践講座TensorflowとKerasによる深層学習のプログラム実装実践講座
TensorflowとKerasによる深層学習のプログラム実装実践講座
Ruo Ando235 views

関数型プログラミング入門 for Matlab ユーザー