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])では、きちんとソートされない。明確に言うと、リストの中に同じ値があった場合は、リストが短くなってしまう