티스토리 뷰

Haskell

Programming in Haskell (3) Ch1. Exercise

newpolaris 2011. 1. 14. 15:05
vim 의 경우 sytax highlight를 기본적으로 제공하여 필자는 gvim을 이용하여 코드를 작성하였다.
좀더 편한 플러그인 셋은 http://projects.haskell.org/haskellmode-vim/ 에서 자료를 얻을 수 있다.

2. 모든 x에 대해 sum[x] = x임을 보여라.
  sum[x]
= x + sum []
= x + 0   ( 0 은 '+' 의 항등원
= x


3. 수로 이루어진 리스트의 곱을 구하는 함수 product를 정의하고, 정의한 함수를 써서 product [2,3,4] = 24 임을 확인해 보라.

myProduct[] = 1
myProduct(x:xs) = x * myProduct xs
*Main> myProduct[2,3,4]
24

4. qsort 정의를 수정하여 반대로 정렬된 리스트를 내놓게 하라.

qsort[] = []
qsort(x:xs) = qsort larger ++ [x] ++ qsort smaller
              where
                smaller = [a|a <- xs, a < x]
                larger = [b|b <- xs, b >= x]

*Main> qsort[5,4,3,2,7]
[7,5,4,3,2]

5. qsort 정의에서 <= 를 <로 바꾸면 어떻게 되겠는가?
unique 한 즉 중복된 값이 제거된, 정렬된 리스트를 반환한다.

unique[] = []
unique(x:xs) = unique smaller ++ [x] ++ unique larger
              where
                smaller = [a|a <- xs, a < x]
                larger = [b|b <- xs, b > x]

*Main> unique[15,25,3,5,1,3,5,3,3]
[1,3,5,15,25]




'Haskell' 카테고리의 다른 글

Programming in Haskell (6) ch3. Exercise  (0) 2011.01.17
Programming in Haskell (5) ch2. Exercise  (0) 2011.01.14
Programming in Haskell (4)  (0) 2011.01.14
Programming in Haskell (2)  (0) 2011.01.14
Programming in Haskell (1) 시작하기  (0) 2011.01.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크