2010-05-01から1ヶ月間の記事一覧

ポイントフリー

一つの値を名前に束縛せずに複数箇所で使うってどうやるんだ。Sコンビネータ的なものが用意されてる? cube = (((*).((*)<*>id))<*>id) -- \x -> x * x * x fib = (flip(if'.(< 2))1)<*>((+).fib.(-1 +)<*>fib.(-2 +)) http://d.hatena.ne.jp/nishiohirokazu…

コンビネータ一覧表

この間Gaucheで作ったラムダ式からの変換プログラム(とその後の調査)からわかったことを表にまとめてみた。 name in out memo I x x S K _ , W K , C K _ , R _ K M x x x O I , W I , W T Y x x (Y x) M2 L , U U , M2 (B M2 B) i x x S K V S K , S (O (K …

ラムダ式からの変換

Schemeのラムダ式に対応するコンビネータ表記を求めるプログラムを作った。 使い方 lambdaをlambdaccにして、通常のlambdaと同じように引数と本体を与える。 gosh> (lambdacc (x y z) (x (y z))) B gosh> (lambdacc (x y) (x (y y))) (C B M) ソースコード (…

ポリモルフィズムのレベル

ポリモルフィズムなし →普通の関数 例:C言語等 1つの引数(self)の型に応じてポリモルフィズム →普通のオブジェクト指向のメソッド 例:Smalltalk等 全ての引数の型に応じてポリモルフィズム →ジェネリックファンクション 例:CLOS等 さらに戻り値の型にも…