Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【Haskell】偶然にもHaskellでプログラムを作ることになったおれたちは・・・

(過去記事のコピペです、2013/04/17)

Haskellの利点すらきちんと理解していないのに、それでプログラムを書こうとするのはすごいと思う。
いろいろと使い方を調べたメモ書きです


コンパイラ

GHCというのをインストールする
Mac向けのバイナリもあるらしいけど、portにやってもらうことにした

port search ghc
sudo port install ghc

これで2つのものが使えるようになる


ひとつは ghc
これはソースを書いてコンパイルするためのコンパイラ

もうひとつは ghci
こっちはインタープリタ的な使い方ができる

まずは ghci を触っていく

ghci、大地に立つ

$ ghci
GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for helpLoading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>


簡単な四則演算とかは省略

Haskellでは関数の後に括弧はいらないらしい
つまりsqrt(2)
がsqrt 2
でもおーけー

画面出力

putStrLn "Hello, world"

putStr "Hello, world"
Lnのない方は改行しないだけ?

一つの式で複数の出力を使いたいときは do ブロッックを使う
do { putStr "1 + 1 = " ; print (1 + 1)}


丸括弧がいろいろと重要らしい

入力

Prelude> do { n <- readLn ; print (n^2) }
2
4
2が入力で4が出力
Prelude> do { n <- getLine ; print (n) }
hoge
"hoge"

hogeが入力で "hoge" が出力

データの入力は readLn もしくは getLine
readLn はどんな型の値でも返す
getLine はStringで返す


# Haskellソースコードのファイル尾は.hsがよく使われるらしい

# ハスー