functional programming & c++

38
Functional Programming 2016/3 C++ y = cos x/3

Upload: hirohito-kato

Post on 18-Feb-2017

204 views

Category:

Software


4 download

TRANSCRIPT

Page 1: functional programming & c++

Functional Programming

2016/3

C++

y = cos x/3

Page 2: functional programming & c++

Functional?

Differences from Imperative

in C++

Agenda

Page 3: functional programming & c++

Functional?

Page 4: functional programming & c++

declarative code

higher-order function

static binding

lazy evaluation

Functional Programming is

Page 5: functional programming & c++

C/C++ (Imperative)

Declarative code

Page 6: functional programming & c++

std::function(), , , callback ,

DI, etc.

Higher-order function

Page 7: functional programming & c++

Static binding

Page 8: functional programming & c++

(eager evaluation)

C/C++

Lazy evaluation

Page 9: functional programming & c++

PROS!

Page 10: functional programming & c++

IO

CONS"

Page 11: functional programming & c++

That is…

Page 12: functional programming & c++
Page 13: functional programming & c++

C/C++

Page 14: functional programming & c++

Imperative vs. Functional

C++ Haskell

Page 15: functional programming & c++

Imperative vs. Functional

https://msdn.microsoft.com/ja-jp/library/bb669144.aspx

Page 16: functional programming & c++

Programming Paradigms

http://docs.python.jp/3/howto/functional.html

Page 17: functional programming & c++
Page 18: functional programming & c++

Imperative vs. Functional

Page 19: functional programming & c++

Imperative & Functional

C++Haskell

Page 20: functional programming & c++
Page 21: functional programming & c++
Page 22: functional programming & c++
Page 23: functional programming & c++

💎💎

💎

💎 💎

💎

💎

Page 24: functional programming & c++

Training in FP, with C++

Page 25: functional programming & c++

Immutable

Page 26: functional programming & c++

const / const&

const

const (mutating)

Immutable

Page 27: functional programming & c++

FP

UI In/Out

FP

Immutable

Page 28: functional programming & c++

lambda

Page 29: functional programming & c++
Page 30: functional programming & c++
Page 31: functional programming & c++

API

vector<int> function_name([xxx,] vector<int> &array);

result = filter_prime(sort(take3(array)));

vector<int> function_name([xxx,] vector<int> &array);

result = take3(filter_prime(sort(array)));

Page 32: functional programming & c++

OK

Program is …

disposable code

long life code

Page 33: functional programming & c++

immutable

Page 34: functional programming & c++

immutable

mutable

Page 35: functional programming & c++
Page 36: functional programming & c++

Recap

Page 37: functional programming & c++

C/C++

Recap

Page 38: functional programming & c++

Try! FP