Haskellのお勉強
Haskellを勉強し直す
イマイチよくわかってなくて、特にIOとか文字を数字にする方法とかがヘルプ片手にしないと書けない
こりゃたまらん
勉強し直すと言っても、関数型言語の決まって最初のサンプルがなぜかフィボナッチ数の計算だったりする
あんなもんクソの役にすら立ったことがない
目標が定まってないと途中でだれるので、いつものお題のHTTPサーバでも実装することにしよっか
今日のお題、echo、cat、headの実装
echo
main = do contents <- getContents putStr contents
自慢じゃないけどprintって書いてあせった
cat
import System.IO import System.Environment main = do args <- getArgs cat args cat :: [FilePath] -> IO () cat [] = return () cat (path:xs) = do h <- openFile path ReadMode contents <- hGetContents h putStr contents hClose h cat xs
自慢じゃないけど空のIO返す方法が全く分からずググった
ついでに自慢すると cat [path:xs] = do って思わず書いてコンパイルエラー見て焦った
head
import System.Environment main = do (n:_) <- getArgs contents <- getContents putStr $ unlines $ take (read n) $ lines contents
自慢じゃないけどreadなんて全く覚えてなかった
自慢ばかりで悪いけど最初勢いで split contents $ take n $ join $ putStr って書いた
とりあえず先にお題を設定しておこう
明日のお題
sort、reverse
明後日のお題
wc、expr