図で理解するArrow
コードでの具体例、実行例も添えてあると良い
図のルール
丸が関数、四角がarrow
青が入力
緑が出力
関数の図式化
まる
arr :: (a -> b) -> h a b
hsf = arr (+1)
g = arr (*2)
>>> :: h a b -> h b c -> h a c
なんで一緒に紹介される?
(***) :: h a b -> h c d -> h (a, c) (b, d)
hs(f *** g) (100,100) -- >> (101,200)
(&&&) :: h a b -> h a b' -> h a (b,b')
入力側が同じものを合成する
なので全体として入力が一つのarrowになる
hs(f &&& g) 100 -- >> (101,200)
first :: h a b -> h (a,c) (b,c)
と second :: h a b -> h (c,a) (c,b)
firstは前者のみに適用する
hsfirst f (100,100) -- >> (101,100)
second g (100,100) -- >> (100,200)
サブクラス
|||
+++
left
と right
app
loop
基本的なもの
サブクラス
参考
良い動画
