Serbest tanımlayıcıyı anlamaya çalışıyorum =? ve sınır tanımlayıcı =? Özgür tanımlayıcıyı kullanarak bana eşdeğer kod örnekleri verebilir mi? true ve bound-identifier = kullanıldı yanlış dönecekti.arasındaki fark =? ve sınır tanımlayıcı =?
Teşekkür
Serbest tanımlayıcıyı anlamaya çalışıyorum =? ve sınır tanımlayıcı =? Özgür tanımlayıcıyı kullanarak bana eşdeğer kod örnekleri verebilir mi? true ve bound-identifier = kullanıldı yanlış dönecekti.arasındaki fark =? ve sınır tanımlayıcı =?
Teşekkür
İşte bir örnek:
(define-syntax (compare-with-x stx)
(syntax-case stx()
[(_ x-in)
(with-syntax ([free=? (free-identifier=? #'x-in #'x)]
[bound=? (bound-identifier=? #'x-in #'x)])
#'(list free=? bound=?))]))
(define-syntax go
(syntax-rules()
[(go) (compare-with-x x)]))
(go) ;; => '(#t #f)
x
üzerine biraz o genişletme adımı bir işareti, ama bu yüzden bound-identifier=?
onları farklı düşünmektedir vermez compare-with-x
yılında x
go
tarafından sahiptir tanıtıldı. bir argüman bir iz yok gibi x
go2
verilen oysa
(define-syntax (compare-xs stx)
(syntax-case stx()
[(_ x1 x2)
(with-syntax ([free=? (free-identifier=? #'x2 #'x2)]
[bound=? (bound-identifier=? #'x1 #'x2)])
#'(list free=? bound=?))]))
(define-syntax go2
(syntax-rules()
[(go2 x-in) (compare-xs x-in x)]))
(go2 x) ;; => '(#t #f)
İşte
go2
ayrıca işaretiyle bir x
tanıtır:
İşte başka bir örnek. Aynı hikaye.
[Nasıl serbest tanımlayıcı =? ve sınır tanımlayıcı =? çalışır?] (http://groups.google.com/group/plt-scheme/browse_thread/thread/1f95b5c0f8540f93) –
[Bu e-postaya bakın] (http://lists.racket-lang.org/users/archive/2011 -Newil/045117.html) Racket posta listesine ve çevreleyen konuya. –
Bu işlevlerin ne için kullanılması gerektiğini anlıyorum ve neden oldukları yollarını (işaretler ve yer değiştirmeler açısından) anladıklarını anlıyorum. Anlamakta zorlandıklarım, farklı sonuçlar verebilecekleri durumlardır. Bir kod örneği (oldukça anlamsız olsa bile) bununla yardımcı olacaktır. – jahhaj