十四日目
VBoxHeadlessTray を入れてみた。これだと一々 VM 起動してること気にしなくてよさそう。
SICP 読まないとなあとか思ってるこの頃。
Haskell, monad ぐらいまでやろうかなあとか思って目次見たけど一番最後だった。
- 作者: Miran Lipovača,田中英行,村主崇行
- 出版社/メーカー: オーム社
- 発売日: 2012/05/23
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 580回
- この商品を含むブログ (70件) を見る
第8章
入出力。結構難しいとか聞いたことある。
8.1
- いい話
8.2
- ついに ghci 以外から呼び出すようになるのか
- よく考えたら今 hello world なのすごい
- コンパイルだ。。。!
- まあ ghci からロードしてる時も呼び出してるのだけど
- 返り値はあってアクション
- C みたいに
main
がデフォで行われるみたいな感じかな
8.3
- 急に命令形っぽくなってきた
main
自体がIOアクションを返す
getLine
はIOアクションで、String
を返すprintStrLn
はIOアクション自体で、<-
はそこから取ってくるみたいな感じ仮名- 見た感じリスト内包のアレとは違いそう。
do
構文自体はIOアクションを返すんかなdo
の中で=
使ったら怒られたけどそういうもんなのかlet
使ったらできた。
- haskell, 地味にインデント必要なのが難しいと思う*1
foo <- putStrLn "hello" putStrLn $ show $ foo == ()
としたら True
と出てなるほどって感じ。
ghci
でやってもdo
内でやれって怒られた。- もしやと思って
let
付けたら通った。
- もしやと思って
null
初めて見た気がするFoldable
を引数に取るのでisEmpty
みたいなもんっぽい
return
もIOアクションなのかーdo
節で終わりに何もしない時とかに使う
8.4
- それっぽい入出力群
- 入力を反転して返すの、
when
使えば
when (not $ null line) do putStrLn $ reverse line
に省略できて便利
forM
やmapM
はIOアクションの結果を入れてくれる
感想
- 一気に実用的になった感じで楽しかった。
- なるほどいろいろ考えられてるなぁという感じ
- これがよく聞くIOモナドかと思いながら読んでた。