티스토리 뷰
vim 의 경우 sytax highlight를 기본적으로 제공하여 필자는 gvim을 이용하여 코드를 작성하였다.
좀더 편한 플러그인 셋은 http://projects.haskell.org/haskellmode-vim/ 에서 자료를 얻을 수 있다.
2. 모든 x에 대해 sum[x] = x임을 보여라.
좀더 편한 플러그인 셋은 http://projects.haskell.org/haskellmode-vim/ 에서 자료를 얻을 수 있다.
2. 모든 x에 대해 sum[x] = x임을 보여라.
sum[x]
= x + sum []
= x + 0 ( 0 은 '+' 의 항등원
= 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
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]
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]
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
링크