Control.Arrow - mzsmsの雑記を読んでArrow というものを理解しようとしてたんだけど、app 関数でちょっとつまずいたのでメモしておく。
loop はあんまりにも分からなかったので後回し。なんとなくフリップフロップ回路に似ている気はした。
悩んでたコードは先のブログのこのコード。
ghci>let g= id*** (*2)>>> appghci> g ((+10),2)
app の型と、関数インスタンスに限定したときの型と値は、
app:: ArrowApply a=> a (a b c, b) capp:: (a-> b, a)-> bapp (f, a)= f a
id *** (*2) の型は、
id*** (*2):: Num a=> (b, a)-> (b, a)
>>> は、
(>>>):: (a-> b)-> (b-> c)-> a-> c(>>>)= flip (.)
よって id *** (*2) >>> app の型は、
id*** (*2):: Num a=> (b, a)-> (b, a)app:: (a-> b, a)-> bid*** (*2)>>> app:: Num a=> (a-> b, a)-> b
分かると大したことないな、という感じ。
本ブログでは、Google Analytics を利用しており、そのため Cookie を使用しています。詳細についてはこちらをご覧ください。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。