Programing in Haskell Chapter1
Programing in Haskell Chapter1 p.1~p.9
http://www.amazon.co.jp/dp/0521692695
Excesises
-- doubleの別の書き方 double x = x + x double' x = x * 2 -- リストの掛け算 product' [] = 1 product' (x:xs) = x * product xs -- でかい順に並ぶクイックソート qsort_big [] = [] qsort_big (x:xs) = qsort_big larger ++ [x] ++ qsort_big smaller where smaller = [ a | a <- xs, a <= x ] larger = [ b | b <- xs, b > x ]
- qsortのfilter条件が以下(<=)ではなく、(<)の場合の振る舞いはどうなるか?
ヒントに示されていたとおり、境界条件のリスト([2,2,3,1,1])では、きちんとソートされない。明確に言うと、リストの中に同じ値があった場合は、リストが短くなってしまう