とりあえず作ってみよう - かずきのBlog@Hatena
の続きってことで、とりあえず作ってみた。
これくらいのプログラムを組むのに結構かかってしまう。
まだまだ脳みそが関数型言語を使う領域に達していないんだなぁと実感。
そしてHaskell的に、いいプログラムなのか悪いプログラムなのかも不明だが、
とりあえず完成はこんな感じ。
Sort.hs module Sort(recordSort) where import Maybe import List recordSort :: [(Int, Int)] -> [Int] -> [Int] recordSort record = reverse . sortBy (comp record) comp :: [(Int, Int)] -> Int -> Int -> Ordering comp rec l r = compare (getSortKeyValue l) (getSortKeyValue r) where getSortKeyValue val = case (lookup val rec) of Just a -> a Nothing -> 0
Main.hs module Main where import Sort record = [(7, 345), (8, 678), (1, 123), (2, 456), (5, 567), (6, 812), (3, 781), (4, 234)] target = [4, 5, 3, 1, 2] main = print $ recordSort target record