Saturday, May 16, 2009

About Haskell (A Short Introduction to Haskell) 번역 (3)

함수형언어의 장점은?

스프레드쉬트나 SQL은 모두 특정 경우에만 사용하는 언어이다. 함수형언어는 같은 아이디어를 범용 프로그래밍의 영역에 적용한 것이다. 함수형 프로그램이 어떻한 것인지를 살펴보기 위해서, 아래에 퀵-정렬 프로그램을 예시한다. 이들 두 프로그램은 퀵-정렬이라는 방법을 사용해서 배열을 오름차순으로 정리하는 것이다. 첫 프로그램은 Hasekll로 작성하였으며, 두번째는 C로 작성하였다.

Haskell로 작성한 퀵-정렬

qsort []     = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
                 where
                   elts_lt_x   = [y | y <- xs, y < x]
                   elts_greq_x = [y | y <- xs, y >= x]

C로 작성한 퀵-정렬

qsort( a, lo, hi ) int a[], hi, lo;
{
  int h, l, p, t;

  if (lo < hi) {
    l = lo;
    h = hi;
    p = a[hi];

    do {
      while ((l < h) && (a[h] <= p))
          l = l+1;
      while ((h > l) && (a[h] >= p))
          h = h-1;
      if (l < h) {
          t = a[l];
          a[l] = a[h];
          a[h] = t;
      }
    } while (l < h);

    t = a[l];
    a[l] = a[hi];
    a[hi] = t;

    qsort( a, lo, l-1 );
    qsort( a, l+1, hi );
  }
}

그러면 Haskell이나 함수형 프로그래맹의 장점은 무엇인지 생각해보자. 함수형 프로그래밍의 상세한 사례에 대해서는,

Why Functional Programming Matters
(http://www.md.chalmers.se/~rjmh/Papers/whyfp.html)

에서 알아볼 수 있다. 위의 논문에 영향을 받은 엣에이로는,

Why Does Haskell Matter
(http://www.haskell.org/complex/why_does_haskell_matter.html)

이 있다.

No comments: