wvogel日記

自分用の技術備忘録が多めです.

代数的data型

import Data.List

data Line = L {number::Int, name:: String} deriving Show

myline::Line
myline = L 17 "w-Vogel"

mylist::[Line]
mylist = [(L 1 "dora-yaki"),(L 3 "cake"),(L 2 "imo-kenpi")]

sortLines::[Line] -> [Line]
sortLines = sortBy (\x y -> number x `compare` number y)

sortName::[Line]->[Line]
sortName = sortBy (\x y -> name x `compare` name y)

main = do print (name myline)
          print $ mylist
          print $ sortLines mylist
          print $ sortName  mylist

ふつうのHaskellプログラミングを参考に書いてみた。ふむふむ、なるほどこんな感じか?
まだいまいち使い方がよくわからない

あと、モナドの練習もやってみた。
ポイントフリースタイルも使って、

main = do cs <- getContents
          putStr $ firstNLines 10 cs

firstNLines n = unlines.take n.lines

が、

main = do getContents >>= putStr . unlines.take 10.lines

になった。