4
每次我在PLT redex中定義一種語言時,我需要手動定義一個(捕獲避免)替換函數。例如,這種模式還沒有完成,因爲subst
沒有定義:plt-redex:捕獲 - 免費替代?
#lang racket/base
(require redex/reduction-semantics)
(define-language Λ
[V ::= x (λ x M)]
[M ::= (M M) V]
[C ::= hole (V C) (C M)]
[x ::= variable-not-otherwise-mentioned])
(define -->β
(reduction-relation Λ
[--> (in-hole C ((λ x M) V))
(in-hole C (subst M x V))]))
但subst
的定義是顯而易見的。 PLT redex可以自動處理替代嗎?
嘿,奔!我和至少一個人(也是一個沒有經驗的殺手)很難分析'指稱'條款。特別是,不清楚的是,可以引用有界變量的術語是最接近'#:指向'左邊的那個術語。在老的lambda中,這並不重要。在'let x = M in M'的情況下它變得相關。也許,爲了子孫後代,注意'(讓x = M in M#:指x)'就像預期的那樣工作。也就是說,'x'只在第二個'M'中被綁定。 –