함수형 언어의 4가지 키워드: enumerate, map, filter, accumulate

http://gensym.org/2007/4/7/enumerate-map-filter-accumulate
http://onsmalltalk.com/programming/smalltalk/on-simple-functional-idioms/

“employees 배열이 주어졌을때 프로그래머의 최고 연봉을 구해보자.”는 문제에 대한 구현 비교. 언제나 느끼는 거지만 자바는 너무 할말을 하나씩 다 써야합니다. 반면에 함수형 언어 루비등의 경우라면,

employees.
  select {|emp| :programmer == emp.role }.
    map {|emp| emp.salary }.
      inject {|m, v| m > v ? m : v}

이 얼마나 간단한지. C++의 경우에도 비슷하게는 할 수 있겠지만, boost의 도움을 얻어야하는 점이 골치거리이고, 자바는 이제사 lambda 를 고려하고 있으므로 그때를 기다리는 수 밖에요.

Similar Posts:

Comments 8

  1. 홍민희 wrote:

    위에서는 예시를 위해 일부러 inject를 쓰셨겠지만, max를 써도 되겠죠.

    employees.select { |emp| emp.role == :programmer }.map { emp| emp.salary }.max

    Posted 08 Jul 2007 at 7:59 pm
  2. 홍민희 wrote:

    앗… <code> 태그와 <pre><code>가 똑같이 블럭으로 처리되네요.

    Posted 08 Jul 2007 at 8:01 pm
  3. MKSeo wrote:

    음.. 네. max도^^; pre 태그는 글에서 안써봐서 잘 모르겠네요;;

    Posted 09 Jul 2007 at 2:09 pm
  4. Sam Kong wrote:

    안녕하세요? 오랜만에 와 봅니다.

    이렇게 해보면 어떨까요? 사실 inject는 여러 기능을 복합적으로 처리할 수 있거든요.

    employees.inject(Float::MIN) { |m, e| e.role == :programmer ? [m, e.salary].max : m }

    Posted 11 Jul 2007 at 9:23 am
  5. MKSeo wrote:

    정말 오랜만이네요 ^^;

    Posted 12 Jul 2007 at 7:48 am
  6. 아즈 wrote:

    형 블로그 살렸어요..
    WordPress 쓰기 어렵네요 ㅎㅎ
    형 따라서 WordPress로 왔는데 ^_^

    Posted 12 Jul 2007 at 11:24 am
  7. MKSeo wrote:

    대체 네 블로그엔 무슨일이;;; 아무튼 살린거 축하~ ^^
    난 티스토리로 옮길까 하다가 이블로그는 이미 하도 많이 customization을 해놔서 옮기지 못하구 그냥 쓰구 있어.

    Posted 12 Jul 2007 at 12:42 pm
  8. 아즈 wrote:

    그렇군요 ㅎㅎ
    저도 customization 하려고 노력 중인데 어렵네요,
    쉽게 설명해 주는 사이트 있음 좋을텐데;;
    영어는 귀찮고… 시간을 가지면서 천천히 해야 될 것 같아요
    지금은 태터에서 WordPress로 포스팅을 옮겨야 하는데;;
    프로그램을 짜야 할 듯.. 후덜덜;;

    Posted 13 Jul 2007 at 12:49 am

Post a Comment

Your email is never published nor shared.