Ich beginne zu studieren Lisp und ich finde einen Code auf dem Buch als Beispiel, aber ich verstehe nicht, wofür es ist. Kannst du mir helfen, das zu verstehen? Ich weiß nicht, ob es der richtige Ort dafür ist. Vielen Dank alleErklärung eines Lisp-Codes
(defun compress (l1)
(cond ((null (cdr l1)) '())
(t (accumula (car l1) 1 (cdr l1)))))
(defun accumula (val acc lst)
(cond ((null lst) (cons (comp-list val acc) nil))
((eq val (car lst)) (accumula val (1+ acc) (cdr lst)))
(t (cons (comp-list val acc) (accumula (car lst) 1 (cdr lst))))))
(defun comp-list (val acc)
(if (> acc 1) (list acc val) val))
[Diese Seite] (https://gist.github.com/kidd/262204) bietet einige Beispieleingaben und -ausgaben, um die Funktion zu demonstrieren. '(compress '(3 3 4 3 3 2 1 1 1 1 0))' ergibt' ((2 3) 4 (2 3) 2 (4 1) 0) ' –
Gibt es eine definierte Funktion namens" compress "in lispeln? – Anna
Ich weiß es nicht. Ich bezweifle das. Vielleicht in Common Lisp. –