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.

Functional Programming 01

482 views

Published on

함수형 프로그래밍에 대해 가볍게 소개합니다.

Published in: Technology
  • Be the first to comment

Functional Programming 01

  1. 1. 함수형 프로그래밍 1부 (Functional Programming)
  2. 2. “일반적인 프로그래밍은 그냥 생각하면 되는 것이고, 함수형 프로그래밍은 기존과 다르게 생각하는 방법을 알려줄 것이다. 그러므로 당신은 예전 방식으로 절대 돌아가지 않을 것이다.”
  3. 3. 함수형 프로그래밍이 주목 받는 이유
  4. 4. 병렬 컴퓨팅 환경의 발달
  5. 5. 무어의 법칙 종결 “컴퓨터에서 사용하는 반도체 회로 성능은 18개월마다 2배로 빨라진다”
  6. 6. 함수형 프로그래밍이 란? “함수형 프로그래밍은 대입문(assignment statements) 없 이 프로그래밍을 하는 것이다.”
  7. 7. 선언형 프로그래밍 (What) “선언형 프로그래밍은 프로그램이 함수형, 논리형, 제한형 프로그래밍 언어로 쓰인 경우에 "선언형"이라고 한다. 선언형 프로그램은 목표를 명시하고 알고리즘을 명시하지 않는 것이다”
  8. 8. 함수형 프로그래밍 언 어란?
  9. 9. 적극적이고 격렬하게 부작용을 적대하는 언어
  10. 10. “함수 또는 표현식은 값을 반환하는 것 외에도 일부 상태를 수정하 거나 호출 또는 외부 세계와 관찰 가능한 상호 작용이있는 경우 부 작용이 있다고 한다.” 부작용이란(Side Effect)?
  11. 11. APL, ATS, CAL, C#, D,DART, Curl, ECMScript, Erlang, F#, FPr, J, Java(8), Lisp, ML, Opal, Python, Q, R, Ruby, REFAL, Rust, Scala, Swift … Agda, Charity, Clean,Coq, Curry, Elm, Frege, Haskell, Hope, Joy, Mercury … Pure Impure 불가능 var x = 0; x = x+1;
  12. 12. 한번 만들어진 값은 변하지 않는 다
  13. 13. 기존값을 바꾸지 않고, 기존값을 포함한 새로운 값을 만든 다.
  14. 14. “관찰 가능한 부작용을 제거” 부작용을 격렬하게 적대하기 위해서는?
  15. 15. “함수의 실행이 외부에 영향을 끼치지 않기 때문에 디버깅이 쉽다” func add(x:int, y:int) { return x+y } Pure Function (부작용이 없는 함수)
  16. 16. “환경, 조건에 관계 없이 같은 함수를 호출 하면 항상 같은 값을 반환” 참조 투명성 (Referential Transparency)
  17. 17. 순수 함수는 하나 이상 의 매개변수를 가진다. “입력값이 없는 함수는 항상 같은 값을 반환하거나, 다른 곳에서 입력을 받는다”
  18. 18. 순수 함수는 반환값이 있어야 한다 “반환값이 없는 함수는 부작용이 있거나, 아무 의미없는 함수이다.”
  19. 19. 루프를 사용하지 않는 다 “재귀함수, Higher-Order Function(고차함수) map, filter, reduce 등을 활용”
  20. 20. “함수를 매개변수로 받거나 반환하는 함수” 고차함수 (Higher-Order Function)
  21. 21. Imperative Implementation let array = [1,2,3,4,5] for i in array { print(i*i) // 1,4,9,16,25 } Declarative Implementation print(array.map { $0*$0 }) // 1,4,9,16,25 map(Swift 3)
  22. 22. “Lamda, Monad, Category Theory 등 함수형 프로그래밍의 근간에 대해” What’s next

×