4

なぜ純粋な型付けされていないラムダ計算は、しばしば使用できないと言われるのですか?

関数の適切なライブラリがあれば、他の関数型言語とほぼ同じではないでしょうか?

4

2 に答える 2

12

速度は大きな問題ではありません。たとえば、教会の数字を使用することを決定しても、実装を最適化して、数字が通常どおりに表示されるようにすることができます。これは、ユーザーに対して完全に透過的な方法です。結果として得られる数値は、明らかにどの言語でも同じように機能しますが、独自の算術演算を実装しようとして、実装のものほど高速ではないことに気付いた場合、または組み込み関数を使用した7方がはるかに高速であることに気付いた場合を除きます。対応するラムダ式より...しかし、それは多くのことを指していますもっと悪い問題。単純なラムダ計算では、引数が 1 つの関数しかありません。これは、すべてが単なる関数であるため、型エラーのない非常に低レベルのアセンブリに似た言語で作業していることを意味します。実際、単純なラムダ計算だけに固執すれば、エラーはまったくありません。ここでは機械語との類似性が非常に重要です。ここでは、2 つの文字列を追加すると、結果は乱数になります。ラムダ計算言語では、何らかのリスト エンコーディングを数値関数に送信すると、喜んで (偽の) 回答が返されます。

于 2011-02-08T00:36:43.090 に答える
6

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

理論的には、それは単なる別の関数型言語になります。しかし、チャーチ数を使って実際に数学を行うことのパフォーマンスへの影響を考慮しましたか?はい、できます。ただし、プログラムの実行速度が非常に遅いため、プログラムがひどく壊れているように見えます。実用的な関数型言語は、構築可能な抽象化を提供することと、一般的に使用されるものの高速なネイティブ実装を使用することとの間で実用的なトレードオフを行う方法を見つける必要があります。

于 2011-02-07T23:48:14.390 に答える