fgrep
import System import List main = do args <- getArgs cs <- getContents putStr $ fgrep (head args) cs fgrep :: String -> String -> String fgrep pattern cs = unlines $ filter match $ lines cs where match :: String -> Bool match line = any prefixp $ tails line prefixp :: String -> Bool prefixp line = pattern `isPrefixOf` line
- where
- スコープをある式だけに制限した定義を導入する
- where節の外側の変数・仮引数を参照できる
- 「``」による中置演算子化
- xs `isPrefixOf` ys = isPrefixOf xs ys
: head xs , tail xs , filter f xs , any f xs
: List.tails xs , List.isPrefixOf xs ys