Functional Programming in C# Classic Programming Techniques for Modern Projects
functional programming & c++
-
Upload
hirohito-kato -
Category
Software
-
view
204 -
download
4
Transcript of functional programming & c++
![Page 1: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/1.jpg)
Functional Programming
2016/3
C++
y = cos x/3
![Page 2: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/2.jpg)
Functional?
Differences from Imperative
in C++
Agenda
![Page 3: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/3.jpg)
Functional?
![Page 4: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/4.jpg)
declarative code
higher-order function
static binding
lazy evaluation
Functional Programming is
![Page 5: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/5.jpg)
C/C++ (Imperative)
Declarative code
![Page 6: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/6.jpg)
std::function(), , , callback ,
DI, etc.
Higher-order function
![Page 7: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/7.jpg)
Static binding
![Page 8: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/8.jpg)
(eager evaluation)
C/C++
Lazy evaluation
![Page 9: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/9.jpg)
PROS!
![Page 10: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/10.jpg)
IO
CONS"
![Page 11: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/11.jpg)
That is…
![Page 12: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/12.jpg)
![Page 13: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/13.jpg)
C/C++
![Page 14: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/14.jpg)
Imperative vs. Functional
C++ Haskell
![Page 15: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/15.jpg)
Imperative vs. Functional
https://msdn.microsoft.com/ja-jp/library/bb669144.aspx
![Page 16: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/16.jpg)
Programming Paradigms
http://docs.python.jp/3/howto/functional.html
![Page 17: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/17.jpg)
![Page 18: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/18.jpg)
Imperative vs. Functional
![Page 19: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/19.jpg)
Imperative & Functional
C++Haskell
![Page 20: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/20.jpg)
![Page 21: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/21.jpg)
![Page 22: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/22.jpg)
![Page 23: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/23.jpg)
💎💎
💎
💎 💎
💎
💎
![Page 24: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/24.jpg)
Training in FP, with C++
![Page 25: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/25.jpg)
Immutable
![Page 26: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/26.jpg)
const / const&
const
const (mutating)
Immutable
![Page 27: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/27.jpg)
FP
UI In/Out
FP
Immutable
![Page 28: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/28.jpg)
lambda
![Page 29: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/29.jpg)
![Page 30: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/30.jpg)
![Page 31: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/31.jpg)
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++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/32.jpg)
OK
Program is …
disposable code
long life code
![Page 33: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/33.jpg)
immutable
![Page 34: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/34.jpg)
immutable
mutable
![Page 35: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/35.jpg)
![Page 36: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/36.jpg)
Recap
![Page 37: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/37.jpg)
C/C++
Recap
![Page 38: functional programming & c++](https://reader034.fdocuments.us/reader034/viewer/2022042604/58a7f5b91a28abfa488b4f69/html5/thumbnails/38.jpg)
Try! FP