함수형 프로그래밍의 중요한 feature인 lambda에 대하여 다룹니다.
lambda
이름없는 함수, 무명함수, 익명함수 등으로 변역되며 람다대수에 기초합니다. FP 에서는 함수를 1급 시민으로 취급하여 파라미터로 넘기거나 함수자체를 반환 할 수 있습니다. 이때 파라미터로 넘길 함수를 따로 만들지 않고 그순간에만 사용하거나 간단한 식인경우 함수 본체만 넘기면 편합니다.
장점
코드가 간결해집니다. (Java에서는 메서드를 클래스 안의 포함관계로써 넘겨주어야 하는데 이를 함수식 자체로서 다룰 수 있습니다.)
단점
디버깅할때 불편합니다. 복잡한 로직을 람다로 만드는경우 오히려 복잡해 보일수 있습니다. __
Example
C++
기본 구조 : [](){} // [캡쳐](파라미터){본문}
리턴값 명시 : []()->bool{}
C#
() => {} //(int x) => {return x*x;}
=> {} // x -> {return x*x;} (타입추론이 되는경우 타입 생략 가능)
=> // x => x*x
F#
(fun -> ) // (fun x -> x*x)
clojure
1. (fn [] ) 사용 // (fun [x] (* x x))
2. #() 사용 // #(* %1 %1)