2016-04-06 6 views
0

kitapta "4. basım küçük düzenbaz" 10. bölüm okuyorum. non-primitive olduğunu kitabın önceki itibaren"Küçük şeman" kitabında bir atom atomu mu? Basit bir schemer tercüman uygular, -

((eq? (car x) (quote non-primitive) #t) 

: Ben bu hat hakkında net değilim

(define :atom? 
    (lambda (x) 
    (cond 
     ((atom? x) #t) 
     ((null? x) #f) 
     ((eq? (car x) (quote primitive)) #t) 
     ((eq? (car x) (quote non-primitive) #t) 
     (else #f))))) 

: Diğer tüm içerik Page 188 yılında fonksiyonu :atom? dışında bana gayet bir lambda tanımına karşılık gelir.

(non-primitive (table (x) (+ x 1))) 

bu bir lambda tanım kitabında, bir atom anlamına mı geliyor:
(lambda (x) (+ x 1)) 

(geçen çevre table ile) arasındaki bir değere sahiptir?

Ben ancak ben kitapta bahsedilen ilişkilerini bulamıyorum çünkü bu konuda oldukça emin olduğunu tahmin.

cevap

1

kaynak kodu (lambda (x) (+ x 1)) bir atom olmaz ancak bir kapak ile sonuçlanan değerlendirildi değer bir atom olarak bir değerlendirici tarafından belirlenmelidir.

bir listesidir bir atom değil herşeyi lisps. Eğer siz de atomik olarak emin olanlar değerlendirir yapmak gerekir gibi tanıtıp etiket olarak birinci eleman ile pairs olarak kapanışları modellenmiş Şimdi eğer

(define atom? 
    (lambda (x) 
    (not (or (null? x) 
      (pair? x))))) 

ve bu bakarak :atom? yaptığı da budur: Bu gibi tanımlayabiliriz primitive ve non-primitive

için
İlgili konular