Contenu connexe
Similaire à Functional Programming 01 (8)
Functional Programming 01
- 2. “일반적인 프로그래밍은 그냥 생각하면 되는 것이고,
함수형 프로그래밍은 기존과 다르게 생각하는 방법을
알려줄 것이다.
그러므로 당신은 예전 방식으로
절대 돌아가지 않을 것이다.”
- 12. “함수 또는 표현식은 값을 반환하는 것 외에도 일부 상태를 수정하
거나 호출 또는 외부 세계와 관찰 가능한 상호 작용이있는 경우 부
작용이 있다고 한다.”
부작용이란(Side
Effect)?
- 13. 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;
- 17. “함수의 실행이 외부에 영향을 끼치지 않기 때문에 디버깅이 쉽다”
func add(x:int, y:int) {
return x+y }
Pure Function
(부작용이 없는 함수)
- 18. “환경, 조건에 관계 없이 같은 함수를 호출 하면
항상 같은 값을 반환”
참조 투명성
(Referential
Transparency)
- 19. 순수 함수는 하나 이상
의 매개변수를 가진다.
“입력값이 없는 함수는 항상 같은 값을 반환하거나,
다른 곳에서 입력을 받는다”
- 23. 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)