LoginSignup
6
5

More than 5 years have passed since last update.

[JavaプログラマのためのHaskell]一日目・導入の話

Last updated at Posted at 2016-01-15

「ふつうの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.

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5