Successfully reported this slideshow.
Upcoming SlideShare
×

PyconKr2018 Functional Programming

684 views

Published on

파이콘 발표

Published in: Technology
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

PyconKr2018 Functional Programming

1. 1. Python으로 FP하기 Functional programming Wonho Ha aka Las
2. 2. 하원호 소프트웨어 마이스터고등학교 재학중 I Love AI. Java, Python, Elixir, Go 프로그래머 지망생
3. 3. Content Hello Functional World Python fallin into FP More FP-specific Code To make better Code
4. 4. Hello Functional World! Introduction Wonho Ha aka Las
5. 5. 들어가며 Functional Programming
6. 6. 들어가며 Functional
7. 7. 들어가며 Programming
8. 8. - FP의 장점 - Clarity - Efficiency - testability - parallelism - 재미! FP란
9. 9. functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. FP란
10. 10. Functional Programming FP의 핵심
11. 11. FP의 핵심 함수
12. 12. FP의 핵심 고등학교 때의 기억을 되살려보자
13. 13. 함수
14. 14. FP의 핵심 X가 같으면 Y도 같다
15. 15. FP의 핵심 input이 같으면 output도 같다
16. 16. FP의 핵심 Pure Function (순수함수)
17. 17. pure function is a function that has the following properties: Its return value depends only on its parameters and not on any internal or external state (such as local static variables, non-local variables or inputs from I/O devices). Its evaluation has no side effect (such as mutation of local static variables or non-local variables, or performing I/O operations). Pure function
18. 18. Pure function Is our function pure?
19. 19. Pure function
20. 20. Pure function What’s matter
21. 21. Side Effect
22. 22. Pure function Side Effect
23. 23. 비교해보자! OOP vs FP
24. 24. function No Object
25. 25. 들어가며 How to Know the FP
26. 26. 이미 사용중인 FP기법들 ⬥Java8 Lambda, Stream ⬥Map/Reduce ⬥C++ tail recursion optimization ⬥JavaScript anonymous function 알게 된 계기
27. 27. 많은 함수형 언어들 ⬥Rust ⬥Lisp(Clojure) ⬥Elixir ⬥Haskell ⬥Scala 알게 된 계기
28. 28. 들어가며
29. 29. 알게 된 계기 Python에서도 FP를 해보자!
30. 30. Python fallin’ into FP Python’s FP feature Wonho Ha aka Las
31. 31. FP 적용기 Python은 multi-paradigm언어!
32. 32. Python’s functional feature - Map/Reduce - High order function - Lambda - Generator - Iterator Python의 기능들
33. 33. Python의 기능들 Higher Order Function
34. 34. Higher Order Function
35. 35. Higher Order Function
36. 36. Higher Order Function
37. 37. Higher Order Function
38. 38. Functional feature 구현을 미룬다
39. 39. Functional feature Closure
40. 40. Closure 함수가 저장하는 데이터
41. 41. Higher Order Function
42. 42. Higher Order Function
43. 43. Python에서 FP를 할 때의 문제점 - tail recursion optimization - Lambda의 불편함 - immutable data - Curring 부딪히는 문제점
44. 44. Python에서 FP를 할 때의 문제점 - tail recursion optimization - Lambda의 불편함 - immutable data - Curring 부딪히는 문제점
45. 45. 부딪히는 문제점 Missing feature
46. 46. 부딪히는 문제점
47. 47. 부딪히는 문제점 python is not pure functional
48. 48. 부딪히는 문제점 Solution
49. 49. 구세주! Decorator (syntactic sugar)
50. 50. 구세주!
51. 51. More FP-specific Code Math + Library Wonho Ha aka Las
52. 52. FP 적용기 Language Feature Implementation
53. 53. - Functional하게 문제를 해결하는 순서 1. 문제를 쪼갠다 2. 쪼개진 문제를 더 쪼갠다 3. 하나의 문제를 해결하는 순수함수를 만든다 4. 순수함수를 결합한다 FP적인 접근법
54. 54. FP적인 접근법 OOP vs FP
55. 55. FP적인 접근법 Split the problem and modularize it.
56. 56. Math FP is based on mathematics.
57. 57. Math Category theory
58. 58. Math Category theory for Programmers
59. 59. Math 이론도 알았고 실제로 적용해볼까?
60. 60. 다 만들기는 불가능하기에 Library Helps FP!
61. 61. Python’s FP Library - Pymonad - fn.py - Coconut 라이브러리
62. 62. To make better Code 내가 하는 짓이 맞는걸까? Wonho Ha aka Las
63. 63. for문을 없애야 할까? For loop is functional
64. 64. Python Code Pythonic Code
65. 65. FP is not Silver bullet ⬥Speed ⬥All function isn’t pure ⬥lots learning 여전히 존재하는 문제점들
66. 66. One Slow
67. 67. One Lazy Evaluation
68. 68. One Memoization
69. 69. Two Can’t be Pure functional
70. 70. Two “IO monad doesn’t make a function pure; it just makes it obvious it’s impure” -martin odersky-
71. 71. Three Learning Time
72. 72. Three
73. 73. 그래서 결국은 적재적소에 사용하자
74. 74. LAST Q/A