Functional programming

376 views

Published on

Published in: Software
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
376
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Functional programming

  1. 1. NewHeart 서승현 Functional Programming and Tail Recursion
  2. 2. Contents 1. Functional Programming 2. Features 3. Tail Recursion 4. Q&A
  3. 3. Functional Programming Object-Oriented Programming Procedural Programming
  4. 4. Object-Oriented Programming
  5. 5. Object-Oriented Programming
  6. 6. 모든 것은 객체다 Object-Oriented Programming
  7. 7. 모든 것은 객체다 Object-Oriented Programming 추상화
  8. 8. Functional Programming
  9. 9. 모든 것은 함수다 Functional Programming 추상화
  10. 10. Functional Programming
  11. 11. Functional Programming 모든 것은 수학적인 함수다
  12. 12. 모든 것은 수학적인 함수다 Functional Programming
  13. 13. Functional Programming 참조적 투명성 모든 것은 수학적인 함수다
  14. 14. Procedural Programming Referential Transparency
  15. 15. Referential Transparency
  16. 16. Mathematics Referential Transparency
  17. 17. Referential Transparency 𝒇 𝒙 = 𝒙 𝟐 + 𝒙 + 𝟏 𝒌 = 𝟏 𝒙 = 𝒌 + 𝒇 𝒌 𝒚 = 𝒌 + 𝒇 𝒌 𝒙 = 𝒚?
  18. 18. 참조적 투명성 Functional Programming
  19. 19. 참조적 투명성 Functional Programming 상태에 영향을 받지 않는다
  20. 20. 모든 것은 수학적인 함수다 Functional Programming
  21. 21. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  22. 22. Ocaml
  23. 23. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  24. 24. Ocaml Primitive Types int float char string bool unit 2, -2, … 2.0, -2.0, … ‘2’, ‘b’, … “”, “22”, … true, false ()
  25. 25. Type Inference
  26. 26. Type Inference
  27. 27. Type Inference Javascript
  28. 28. Type Inference Javascript Ocaml
  29. 29. Type Inference
  30. 30. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  31. 31. List Processing
  32. 32. List Processing
  33. 33. List Processing
  34. 34. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  35. 35. Pure Function
  36. 36. Function
  37. 37. Function Javascript
  38. 38. Function Javascript Ocaml
  39. 39. Function
  40. 40. Currying
  41. 41. Currying
  42. 42. Referential Transparency C++
  43. 43. Referential Transparency C++ Ocaml
  44. 44. Referential Transparency OcamlJavascript
  45. 45. Referential Transparency
  46. 46. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  47. 47. Short-Circuit Evaluation
  48. 48. Short-Circuit Evaluation
  49. 49. Short-Circuit Evaluation
  50. 50. Non-Strict Evaluation length [0/0, 1/0, 2/0]
  51. 51. Non-Strict Evaluation length [0/0, 1/0, 2/0]
  52. 52. Non-Strict Evaluation length [0/0, 1/0, 2/0]
  53. 53. Non-Strict Evaluation length [0/0, 1/0, 2/0]
  54. 54. Non-Strict Evaluation
  55. 55. Non-Strict Evaluation
  56. 56. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  57. 57. First-Class Function 1. 함수를 인자로서 넘길 수 있다 2. 함수를 값으로서 반환할 수 있다 3. 익명 함수와 중첩 함수 4. 변수에 함수를 대입할 수 있다 5. 비지역 변수와 클로져
  58. 58. Passing Functions as Arguments
  59. 59. Passing Functions as Arguments
  60. 60. Passing Functions as Arguments
  61. 61. First-Class Function 1. 함수를 인자로서 넘길 수 있다 2. 함수를 값으로서 반환할 수 있다 3. 익명 함수와 중첩 함수 4. 변수에 함수를 대입할 수 있다 5. 비지역 변수와 클로져
  62. 62. Returning Functions as Results
  63. 63. Returning Functions as Results
  64. 64. Returning Functions as Results
  65. 65. First-Class Function 1. 함수를 인자로서 넘길 수 있다 2. 함수를 값으로서 반환할 수 있다 3. 익명 함수와 중첩 함수 4. 변수에 함수를 대입할 수 있다 5. 비지역 변수와 클로져
  66. 66. Anonymous and Nested Functions
  67. 67. First-Class Function 1. 함수를 인자로서 넘길 수 있다 2. 함수를 값으로서 반환할 수 있다 3. 익명 함수와 중첩 함수 4. 변수에 함수를 대입할 수 있다 5. 비지역 변수와 클로져
  68. 68. First-Class Function 1. 함수를 인자로서 넘길 수 있다 2. 함수를 값으로서 반환할 수 있다 3. 익명 함수와 중첩 함수 4. 변수에 함수를 대입할 수 있다 5. 비지역 변수와 클로져
  69. 69. Non-local Variables and Closures
  70. 70. First-Class Function 1. 함수를 인자로서 넘길 수 있다 2. 함수를 값으로서 반환할 수 있다 3. 익명 함수와 중첩 함수 4. 변수에 함수를 대입할 수 있다 5. 비지역 변수와 클로져
  71. 71. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  72. 72. Recursion
  73. 73. Recursion
  74. 74. 1. Type Inference 2. List Processing 3. Pure Function 4. Non-Strict Evaluation 5. First-Class Function 6. Recursion Features
  75. 75. Tail Recursion 1. Tail Recursion Optimization 2. Tail Recursion by Accumulator 3. Continuation-Passing Style
  76. 76. Stack Overflow
  77. 77. Tail Recursion
  78. 78. Tail Recursion Optimization
  79. 79. Tail Recursion Optimization
  80. 80. Tail Recursion
  81. 81. Tail Recursion by Accumulator
  82. 82. Tail Recursion Optimization Before After
  83. 83. Tail Recursion Optimization Before After
  84. 84. Tail Recursion by Accumulator
  85. 85. Tail Recursion by Accumulator
  86. 86. Continuation-Passing Style
  87. 87. Continuation-Passing Style
  88. 88. Direct Style
  89. 89. Direct Style
  90. 90. Continuation-Passing Style
  91. 91. Continuation-Passing Style
  92. 92. Continuation-Passing Style
  93. 93. Continuation-Passing Style
  94. 94. Continuation-Passing Style 1. 꼬리 재귀 최적화 2. 비동기 호출의 실행 순서 보장 3. 에러 분기 제어
  95. 95. Tail Recursion 1. Tail Recursion Optimization 2. Tail Recursion by Accumulator 3. Continuation-Passing Style
  96. 96. Q&A

×