2016-03-29 37 views
0
için NIL

Çalıştığım bir problemin, bir listenin belirli bir bölümünü basan bir işlevi gerçekleştirdiğimde, gerçek eleman (lar) ı değil de NIL olarak yazdırmasıdır.Lisp: Fonksiyon yazdırılıyor

Ör: thelist işlevinde kullanılan ancak tek başına kullanıldığında gayet birinci elemanını verir iken

> (setf thelist '((a b) (c (d e f)) (g (h i))) 
> (defun f1(list) 
     (print (car (list)))) 
> (f1 thelist) 
    NIL 
    NIL 

But this works: 
> (car thelist) 
    (A B) 
  1. Neden nil yazdırmak geliyor?
  2. İstediğim listenin bir kısmını yazdırmak için işlevi nasıl alabilirim?

cevap

11

Sen var: Bu list parametresini kullanarak değilthe list function ve başlatıyordur

(print (car (list))) 

. (list) her zaman boş bir liste döndürür. (Ortak Lisp bir işlev çağrı bağlamında list değişken erişim bağlamında list farklı bir şey ifade eder, yani bir "Lisp-2" dir.)

kullanmak için kodunu değiştirmek, düzeltmek için:

Bunun yerine,

.