「ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門」という本を読み進めながらHaskellを勉強していきたいと思います。
この本では、JavaプログラマのためのHaskell入門書といった立場からHaskellを学習していきます。Javaのソースコードと比較しながら説明されていますので読みやすいと思います。
Haskellの利点
・柔軟にプログラミングができる
・コンパイル時の型チェックが容易
・読みやすい
・遅延評価が基本
hello.hs
Hello World を出力
hello.hs
main = putStrLn "Hello World!"
cat.hs
標準入出力
cat.hs
main = do cs <- getContents
putStr cs
・getContents: 標準入力をすべて読み込む.
・putStr: 引数の文字列を標準出力にそのまま出力.末尾に改行はつかない.
・Haskellではインデントが文法的な意味を持つ
リストリテラル
[]
[1, 2, 3]
["aa", "bb", "cc"]
["a", "b", "c"]
"abc"
・リストには一種類の値しか入れられない.
・文字列もリストである.
countline.hs
countline.hs
main = do cs <- getContents
print $ length $ lines cs
・$演算子: ()のネストを減らすために使われる.()で置き換えて書くと、以下.
countline.hs
main = do cs <- getContents
print(length (lines cs))
・lines関数: 文字列を行のリストに分割.
lines "aaa\nbbb\nccc\n" → ["aaa", "bbb", "ccc"]
lines "aaa\n" → ["aaa"]
lines "aaa" → ["aaa"]
lines "\n" → [""]
lines "" → []
・length関数: リストの長さ(要素の数)を返す.
length [1, 2, 3, 4] → 4
length ["aa", "bb", "cc"] → 2
length [""] → 1
length [] → 0
length "String" → 6
length "" → 0
・print関数: 値を文字列化して標準出力に出力.
今回はここまで!
第二回
出典
青木峰郎.ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門.ソフトバンク クリエイティブ株式会社,2006,372p.