Na przykład:

(setf s 2)
    s => 2

(setf list1 '(1 s 3 4))
    list1 => (1 s 3 4)

Jak uzyskać, aby dodać wartość zapisaną w us do listy? W tym przykładzie chciałbym użyć s do wygenerowania listy (1 2 3 4) Mam książkę LISP, którą czytam i nie mogę znaleźć żadnej wzmianki o tym, jak to zrobić, więc pomyślałem, że zapytam . Dzięki

1
Ayman Elmubark 17 luty 2017, 12:04

2 odpowiedzi

Najlepsza odpowiedź

Tak cytowane dane w schemacie są jak stałe ciągów. I 'D muszę pisać "1 " + s + " 3 4". W LISP Mamy Backquot Aby zrobić to w listach strukturach:

`(1 ,s 3 4)
; ==> (1 2 3 4)

Należy zauważyć, że jest to sztuczka Pod kapturem jest bardzo podobny do pisania:

(list 1 s 3 4)
; ==> (1 2 3 4)

I oczywiście list nie jest prymitywnym, ponieważ po prostu używa cons. Co to robi:

(cons 1 (cons s (cons 3 (cons 4 '()))))
; ==> (1 2 3 4)
1
Rainer Joswig 17 luty 2017, 10:52

Chciałbym użyć s do wygenerowania listy (1 2 3 4)

Funkcja list może być przydatna:

CL-USER 14 > (let ((s '2))
               (list 1 s 3 4))
(1 2 3 4)

Funkcja LIST tworzy świeżą nową listę z jego argumentów.

1
Rainer Joswig 17 luty 2017, 10:56