問題タブ [totality]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
coq - プログラムの修正点: let の再帰呼び出しと義務の仮説
私は次のものを持っているとしましょうProgram Fixpoint
:
l
(この例は、単純な例を示すために、基本的に非常にばかげた方法で返されます)。
f
ここでは、 (格納されている)への再帰呼び出しがあります。これは、要素が含まれているf_rec
場合にのみ使用されます。l
f_rec
length (tl l)
length l
しかし、その義務を解決したいとき
私は必要な仮説を持っていませんhd_error l = Some n
。
(なんとなく、 「実際に使われるまで計算を遅らせる」ではなく、「f (tl l)
その場で計算する」と理解されている印象があります)。let in
let ... in
違いを説明するために、ステートメントを「インライン化」すると、次のようになります。
ここに私はHeq_anonymous : Some n = hd_error []
環境にあります。
私の質問は次のとおりです。必要な仮説を持つことは可能ですか、つまり、match ... with
ステートメントによって仮説を生成することは可能ですか?
注: を移動することlet
は解決策ですが、移動せずにこれが可能かどうか知りたいです。たとえば、f_rec
がさまざまなコンテキストで使用されている場合に、重複を避けるために役立つ場合がありf (tl l)
ます。