2016-08-04 4 views
2

まず、私はこれらのことを何も学んだことがないので、申し訳ありませんが、私は非常にばかげた質問をしているかもしれませんが、私に簡単に行ってください:)コール別の評価を誤解していますか?

私はラムダ計算必要に応じた評価を行います。私は、関連するビットが28ページに記載されている自然なセマンティクスであると思われる件名のthis paperに従おうとしています。

とにかく、私がこの評価戦略について理解していないことは、実際の置換は変数を評価するときにのみ起こります。抽象化は値であるため、それ自身を評価し、アプリケーションはキャッシュに新しいエントリを追加するだけです。

しかし、リンク論文に記載自然意味論によると、最初の評価ステップは、エントリーへx -> λa.aを追加することですどのように正確に一度

(λx.λy.x y) λa.a

のような用語を評価について、与えられたことをキャッシュを作成し、アプリケーションのlhsにある抽象の本体を評価します。これはλy.x yです。しかしこれは価値なので、評価は終了します。どの時点で閉じられていない用語と空でないヒープがあります。この用語がλy.(λa.a) yと評価されることは正確に分かりますが。

私は何を誤解していますか?この評価戦略を実際に使用する言語では、どのように機能しますか?

+0

リンクが壊れています。 「私たちは申し訳ありません!URLはリポジトリ内のどのリソースとも一致しません」と表示されます。 –

+0

それは本当に壊れています、申し訳ありません。それは機能的プログラミングのジャーナル、1998年5月、John Maraist、Martin Odersky、Philip Wadlerの記事「The Call-by-Need Lambda Calculus」の記事です。私ができることは、関連する段落のスクリーンショットにリンクすることです:https://www.dropbox.com/s/os7a87s67hy9tpt/Screenshot%202016-08-05%2011.21.04.png?dl=0とhttps:// www .dropbox.com/s/odgtn6jnme0lqbl/Screenshot%202016-08-05%2011.21.29.png?dl = 0 –

+0

この記事は、P. Wadlerのホームページhttp://homepages.inf.edから入手できます。 ac.uk/wadler/papers/need-journal/need-journal.ps –

答えて

1

あなたの削減は正しいです。要点は、このペーパーで取り上げられた必要性戦略によるコールは、ラムダ式の下で決して減少しないという意味で弱い戦略に過ぎないということです。これは図1で明白です。式\ x.Mは値です。

ラムダ項を明示的に取得したい場合は、キャッシュ内のキャッシュ内の関連付けをターム内で代用する必要があります。

   λy.x y [x -> λa.a] = λy.(λa.a) y 

期待どおりです。

+0

私はこれが紙の著者にはっきりと感じられ、明示的に言及する必要はないと思っていますが、少し混乱しました。とにかく、アンドレアに感謝、これはそれをクリアします。 –

関連する問題