PiSigma:なぜ「展開」して変数をバインドするのですか?


8

私は、言語のインタープリターとタイプチェッカーを実装することで、ペーパーΠΣ:Sugarを使用ない依存型を理解しようとしています。そうすることで、unfold t as x -> u再帰的な定義の構文(構文はセクション2.1で定義されています)が変数をバインドしているのを見てきましたが、それが必要な理由はわかりません。このペーパーの例では、実際には変数バインディングを使用していません。これらはすべて省略形unfold t(つまりunfold t as x -> x)を使用しています。

私はない(第5節から)そのためのルールをチェックするタイプは、バインディング変数を使用していることがわかり、私はこれの意味を理解していません。私の知る限りでunfold t as x -> uは、と完全に同等let x = unfold t in uです。

誰かが変数バインディングが役立つまたは必要な場合の例を提供できますか?の長い形式で型チェックし、短い形式では型チェックしunfoldないという用語はありletますか?


タイプチェックルールを引用しますが、私の知識LaTeXはあまりにも限定されています。何か親切な編集者が私のためにそれをしてくれるでしょうか?ありがとう!
スティーブトラウト

回答:


1

魔法/必要な理由はないと思います。IMO、それunfoldは分析/チェック消去ルールであることをより簡単に明白にするためにそのように書かれています。なぜsplit、最初と2番目の投影法としてcase書かれているのではなく、なぜ書かれているのかuneither、Haskellのように書かれているのではなく、なぜ書かれているのと同じです。

「分析」ビットについて、他の除去ルールが合成/推論(ベータ)または双方向(強打)であることに注意してください


ああ、そこに違いがあります。それ!xがが書かれていない理由として考えられforce x as y -> yます。より深い理由があるかどうかにかかわらず、この答えは私の好奇心を満たします。ありがとう!
スティーブトラウト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.