listで練習
- リバース
(myreverse xs ++ x)じゃダメ。
myreverse.hs
myreverse [] = [] myreverse (x:xs) = myreverse xs ++ [x]
mymsort.hs
mymerge (f) [] x = x mymerge (f) x [] = x mymerge (f) x y = if (f) (head x) (head y) then [head x] ++ (mymerge (f) (tail x) y) else [head y] ++ (mymerge (f) x (tail y)) mymsort _ [a] = [a] mymsort (f) x = let { ndiv = div (length x) 2; before = take ndiv x; after = drop ndiv x; } in mymerge (f) (mymsort f before) (mymsort f after)