2007-08-08から1日間の記事一覧
スタック言語の上に最もプリミティブな Arrow が作れないだろうかと考えていて非正格なスタック言語が良いのではと思いついた。たとえば Haskell なんかだと、引数は必要になるまで実行されないので遅延評価を表現する為の特別な記法が無い。例えば Joy だと…
import Control.Arrow newtype SF a b = SF {runSF ::[a]->[b]} instance Arrow SF where arr f = SF (map f) SF f >>> SF g = SF (f >>> g) first (SF f) = SF (unzip >>> first f >>> uncurry zip) instance ArrowChoice SF where left (SF f) = SF(\xs ->…