generated at
ArrowApply型クラス
Arrow型クラスを継承する

関数 f :: a->b と値 x :: a があるとき、 f x とすると b 型になる
f x という、2つの引数から、 f x を得る、とみなせる
イメージ的には、 (f,x) -> f x
ちゃんと型で書くと (a->b, a) -> b
これをcomputationとみなす
ただの関数適用を、computationとみなしている
(a->b, a) -> b を一般化して、 -> h とすると、
h (h a b, a) b と書き換えられる
これがArrowApply
でっていうmrsekut
何が嬉しいの?

本などでは、カリー化関数 crruyA の逆関数が app と説明されているが、
app って関数じゃないじゃんmrsekut
これは逆関数なの?
アンカリー化とは違うの?
ArrowApplyはなんで逆関数の方のみを定義にしたの?
「Monadクラスの利便性が低い版」とは
ref 『関数プログラミングの楽しみ』 p.223下


定義
hs
class Arrow h => ArrowApply h where -- 計算と値から結果を得るという計算 app :: h (h a b, a) b


インスタンスの例
普通の関数 ->
hs
instance ArrowApply (->) where app ~(f,c) = f c


ユースケース
どういうふうに使っているのか見たいmrsekut



参考
めちゃくちゃわかりやすいmrsekutmrsekut