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

Tags:

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 를 고려하고 있으므로 그때를 기다리는 수 밖에요.

Comments

8 responses to “함수형 언어의 4가지 키워드: enumerate, map, filter, accumulate”

  1. 홍민희 Avatar

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

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

  2. 홍민희 Avatar

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

  3. MKSeo Avatar
    MKSeo

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

  4. Sam Kong Avatar
    Sam Kong

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

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

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

  5. MKSeo Avatar
    MKSeo

    정말 오랜만이네요 ^^;

  6. 아즈 Avatar

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

  7. MKSeo Avatar
    MKSeo

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

  8. 아즈 Avatar

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

Leave a Reply

Your email address will not be published. Required fields are marked *