エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

2022-04-01から1ヶ月間の記事一覧

たらい回し関数(1)

たらい回し関数は変数を取り除く例としては使えそうにないので別の項目にすることにしました。ここでは帰納法のパターンについて調べていきます。まず普通に帰納法で証明しようと思ったのですが、以下の順にしないとうまく証明できないようです。 たらい回し…

ラムダ計算と無限ラムダ多項式(18)

たらい回し関数の調査 たらい回し関数は変数を使わない例には使えそうにないですが、調査を継続します。「wikipedia:竹内関数」に書かれている高速化をやってみます。C# で書いた以下のプログラムについて考えます。 public static string Test() { int coun…

ラムダ計算と無限ラムダ多項式(17)

たらい回し関数の例 フィボナッチ数列の例ではクロージャーを変数を使わずに書く例としては単純すぎてわかりにくかったので、たらい回し関数が使えるかどうか調べてみます。まずたらい回し関数自体について調べてみます。たらい回し関数は以下のように定義さ…

ラムダ計算と無限ラムダ多項式(16)

フィボナッチ数列の例(4) クラスを使ったものを考えます。 private class FibClass { private int x = 0; private int y = 1; public int Next() { int z = x + y; x = y; y = z; return z; } } このクラスを使ったものは以下のようになります。 IEnumerable<int></int>…

ラムダ計算と無限ラムダ多項式(15)

フィボナッチ数列の例 繰り返しの回数が有限のときに、(有限個の)変更しない変数で書けることや関数の再帰的定義を取り除くことができること(また変数や関数定義を取り除くことができること)を示すための例を考えます。平方根の例は長いので、ここではフィボ…

ラムダ計算と無限ラムダ多項式(14)

有限ラムダ多項式 Lisp 「平方根の例」を移植するために Common Lisp のサブセットを目指した Lisp を作成します。これを「有限ラムダ多項式 Lisp」と呼ぶことにします。仕様は以下のようになります。 定数・変数 定数には数値、t (真を表す)、nil (偽を表す…