generated at
図で理解するArrow
一つ一つの詳細については、Arrow型クラス側に示す
コードでの具体例、実行例も添えてあると良い


図のルール
丸が関数、四角がarrow
青が入力
緑が出力



関数の図式化
まる

computationの図式化




arr :: (a -> b) -> h a b
関数をcomputationに持ち上げる
hs
f = arr (+1) g = arr (*2)


>>> :: h a b -> h b c -> h a c
2つのcomputationを直列に合成
hs
(f >>> g) 5 -- >> 12
これはCategory型クラスのものではないの?
なんで一緒に紹介される?


(***) :: h a b -> h c d -> h (a, c) (b, d)
2つのcomputationを並列に合成
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は前者のみに適用する
hs
first f (100,100) -- >> (101,100) second g (100,100) -- >> (100,200)






サブクラス




|||
+++
left right



app



loop

基本的なもの

サブクラス




参考
良い動画mrsekut