はじめに
すごいH本の忘れそうな個所を覚え書き
第1章 はじめの第一歩
1.3 リスト入門
- Haskellのリストは同一データ構造.同じ型の要素を複数個格納できる.整数と文字両方からなるようなリストはつくれない.
リスト中のリスト
- リスト中のリストはそれぞれ違う長さでもかまわないが,違う型は許されない.
第2章 型を信じろ!
- "型シグネチャ"...型を表す文字列のこと.2章途中で突然出てくる.注釈は4章に.
第7章 型や型クラスを自分で作ろう
7.8 型クラス 中級編
サブクラス化
Numの型クラス宣言の例.NumのインスタンスになるためにはEqのインスタンスである必要がある.
class (Eq a) => Num a where
...
8章 入出力
8.2 Hello, World!
関数putStrLnの型は「文字列を引数にとり,空のタプル()を結果とするI/Oアクションを返す」.I/Oアクションは,実行されると副作用を含む動作をして結果を返すもの.このことを「I/Oアクションが結果を生成する」という.
:t putStrLn
putStrLn :: String -> IO ()
8.3 I/Oアクションどうしをまとめる
I/Oアクションからデータを取り出せるのは,別のI/Oアクションの中だけ.
doブロックの最後のアクションは名前を束縛できない.詳しくは第13章のモナドで.
9章 もっと入力,もっと出力
9.3 ToDoリスト
Control.Exceptionのリソース開放関数について
- bracket :処理が終わると常に獲得したリソース開放
- bracketOnError :何らかの例外が発生したときのみリソース開放
11章 ファンクターからアプリカティブファンクターへ
11.3 アプリカティブファンクターを使おう
pure f <*> x
はfmap f x
と等しい.fmap f x
の代わりにf <$> x
と書ける.
12章 モノイド
##12.1 既存の型に新しい型をくるむ
newtype
キーワードは、1つの型をとり、それを何かにくるんで別の型にみせかける場合に使う
13章 モナドがいっぱい
13.7 モナド則
###左恒等性
return x >>= f
とf x
は等価.
###右恒等性
m >>= return
はm
.
###結合法則
(m >>= f) >>= g
とm >>= (\x -> f x >>= g)
が等価.