Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PyconKr2018 Functional Programming

555 views

Published on

파이콘 발표

Published in: Technology

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

×