2011-02-07 8 views

答えて

6

理論的には、理論と実践は同じです。実際にはそうではありません。

理論上は単なる別の機能的な言語になります。しかし実際に教会の数字と数学を行うことのパフォーマンスの影響を考慮しましたか?はい、あなたはそれを行うことができます。しかし、あなたのプログラムは非常にゆっくりと実行されるので、重度に壊れて見えるでしょう。実際の関数言語は、に基づいて構築しなければならない抽象概念を提供することと、一般的に使用されるものの高速ネイティブ実装を使用することとの間の実用的なトレードオフを行う必要があります。

+0

はい、私はそれらを考慮しました。私はネイティブの表現とコードに抽象化を自動的に最適化する方法を考えてきました。 –

+0

スピード以外の問題はありますか? –

+0

@フォレスト:スピードは私が知っていることであり、引用されている問題です。それを超えると、普段の障壁、図書館などの障壁があります。もしあなたが実際にそれをやろうとしたら、私はハスケルのような言語を怠惰にすることを提案します。それ以外の点では、Schemeでは単純ではない概念的にプログラマーに何を提供していますか? – btilly

11

速度は大きな問題ではありません。たとえば、教会の数字を使用することを決めることができますが、実装を最適化して、数字はいつものようにユーザーには完全に透過的に表されます。結果の数値は明らかにどの言語でも同じように実行されます - 人々が独自の算術演算を実装しようとするときや、実装からのものとして高速ではないことを発見したとき、または組み込み関数7が多い対応するラムダ式よりも速いです...しかし、その点はであり、多くはという問題が悪化しています。単純なラムダ計算では、引数の関数は1つしかありません。これは、すべてが単なる関数なので型エラーがない非常に低レベルのアセンブリ言語のような言語で作業していることを意味します。実際、ラムダ微積分に固執すれば、エラーはまったくありません。マシンコードの類推はここでは非常に重要です。そこには、必要なものを何でもできます.2つの文字列を追加すると、結果は乱数になります。ラムダ計算言語では、数字の関数にいくつかのリストのエンコーディングを送り、それはうっとりして(偽の)答えを返します。

関連する問題