Haskell

はじめてのHaskell(9)

catn main = do cs <- getContents putStr $ numbering cs numbering :: String -> String numbering cs = unlines $ map format $ zipLineNumber $ lines cs zipLineNumber :: [String] -> [(Int, String)] zipLineNumber xs = zip [1..] xs format :: (Int…

はじめてのHaskell(8)

クイックソート import List main = print $ qsort [3,4,1,8,2,6,5] qsort :: [Int] -> [Int] qsort [] = [] qsort (p:xs) = qsort lt ++ [p] ++ qsort gteq where lt = [x | x <- xs, x < p] gteq = [x | x <- xs, x >= p] 関数 関数 概要 ++ (++)::[a] -> …

はじめてのHaskell(7)

練習問題 countbyte.hs main = do cs <- getContents print $ countByte cs countByte cs = length cs countwords.hs main = do cs <- getContents print $ countWords cs countWords cs = length $ words cs swap.hs main = do cs <- getContents putStr $ …

はじめてのHaskell(6)

grepコマンド 関数 関数 概要 head リストの最初の要素を返す:[a]->a tail 最初の要素をのぞいたリストを返す:[a]->[a] filter リストの要素のうち、f x がTrueである要素を集めたリストを返す: filter::(a -> Bool) -> [a] -> [a] any リストの各要素に…

はじめてのHaskell(5)

echoコマンド作成 import 公開されるモジュールの型や関数を使えるようにする。 Systemモジュール 関数 関数名 概要 getArgs コマンドライン引数を取得する -- getArgs :: IO[string] Mainモジュール Preludeモジュール 関数 関数名 概要 unwords 文字列のリ…

はじめてのHaskell(4)

expand.hs ver2 パターンマッチ 関数の引数に文字リテラルや整数リテラルを指定することで、その値にマッチするときだけ、 関数を実行することができる。 例: Func 't' = xxxx Func 'c' = yyyy Func a = zzzz 't'にマッチしたとき、xxxxを行う。 'c'にマッ…

はじめてのHaskell(3)

expand.hs ver.0 if文 if 条件式 then 式1 else 式2 関数 関数 概要 (==) a->a->Bool: x==y (xとyの"内容"が等しいときTrueを返す) main = do cs <- getContents putStr $ expand cs expand :: String -> String expand cs = map translate cs translate :: …

はじめてのHaskell(2)

関数の型 String -> [String] 関数の第一引数の型:String 関数の返り値の型:[String]第一引数の型 -> 第二引数の型 -> .... -> 返り値の型 型変換 [a] -> Int [a]:多相型(どんな型と置き換えても良い) 型の宣言 firstNLines :: Int -> String -> String ..…

Haskell入門

標準出力 main = putStrLn "Hello, World!" アクション アクション 概要 main mainアクション 関数 関数名 概要 putStrLn 文字列と改行を標準出力する catコマンド main = do cs <- getContents putStr cs アクション アクション 概要 getContents 標準入力…