Sewon Ko
by Sewon Ko

Categories

  • Functional Programming

Tags

  • C#
  • C++
  • Clojure
  • F#

함수형 프로그래밍의 중요한 feature인 lambda에 대하여 다룹니다.

Functional Progamming 시리즈 목차

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)