(続)haskellでバブルソート
タプルの利用により少し先に進んだ。
Prelude> let bsort [] = []; bsort x = (\x->fst x ++ (bsort $ snd x)) $ splitAt 1 $ foldr (\x y->if y==[] then [x] else if x < (head y) then x:y else (head y):x:(tail y)) [] x Prelude> bsort [3,5,2,4,1] [1,2,3,4,5] Prelude> bsort [3,5,2,4,2,1] [1,2,2,3,4,5]
よく考えたらタプル不要。
Prelude> let bsort [] = []; bsort x = (\x->(head x):(bsort $ tail x)) $ foldr (\x y->if y==[] then [x] else if x < (head y) then x:y else (head y):x:(tail y)) [] x Prelude> bsort [3,5,2,4,2,1] [1,2,2,3,4,5]