Haskellのお勉強 文字列の扱い
今日はwcとexprを実装してみた
wcは文字数と行数だけ
exprは結合規則はめんどいのでやんぴ
wc
main = do contents <- getContents putStr "line_count = " putStrLn $ show $ line_count $ lines contents putStr "char count = " putStrLn $ show $ char_count $ lines contents line_count :: [String] -> Int line_count [] = 0 line_count (x:xs) = 1 + line_count xs char_count :: [String] -> Int char_count [] = 0 char_count (x:xs) = chars x + char_count xs where chars :: String -> Int chars [] = 0 chars (x:xs) = 1 + chars xs
length使わずにごりごりやってみた
expr
import System.Environment main = do args <- getArgs putStrLn $ show $ expr args expr :: [String] -> Int expr [] = 0 expr [x] = read x expr (left:ope:xs) | ope == "+" = (read left) + (expr xs) | ope == "-" = (read left) - (expr xs) | ope == "*" = (read left) * (expr xs) | ope == "/" = (read left) `div` (expr xs)
右優先結合only
明日のお題はcsv読み書き
明後日のお題はタプルで1要素目を元にsum、count(group byするイメージ)
明々後日は今月のデータを抽出する方法