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