매크로를 사용하여 Heap's algorithm을 구현했습니다. 괜찮습니다.하지만 필요에 따라 애매하거나 비 애노픽 코드를 생성 할 수 있도록 조정하고 싶습니다. 즉, 매크로를 순차화할 시퀀스의 내부 복사본을 만들거나 매크로 외부에서 사용할 수있는 시퀀스에서 작업하도록하고 싶습니다. ... ;; Anaphoric version
;; To make it n
, 나는 아주 약간 (defparameter *lex* (test-lexer "{ 1.0 12 fred 10.23e12"))
을 할 렉스을 수정 한 증가 시간 시험의 수는 6 (defun test()
(loop repeat 6
collect (multiple-value-list (funcall *lex*))))
에 반복 및 표시로 "{"는
사용자로부터 목록을 가져와이 목록을 단순화 된 목록으로 단순화하는 기능을 작성 중입니다. 이 함수는 목록의 첫 번째 항목 만 반환하고 나머지는 반환하지 않는 것 같습니다. 왜 이렇게하는지에 대한 제안? 예 : 이것은 내가 지금까지 (defun flatten (list)
(cond
((null list)t)
(list (first lis
my_rotate이라는 함수를 작성하여 사용자로부터 숫자를 받고 5 개의 숫자까지 목록을 만듭니다. my_rotate 그러면 목록의 첫 번째 요소가 튀어 나와 목록의 끝에 추가됩니다. my_rotate에 다른 숫자 n을 입력하고 사용자가 입력 한 숫자 n을 기반으로 목록을 회전시킬 수있는 방법에 대한 조언. 예 : > (my_rotate 1 2) 출력 :
Common Lisp는 비파괴적인 기능 (subst & 제거와 같은)과 파괴적인 기능을 제공하고 (& rotatef와 같은) 매크로를 수정하여 일반 용도로 사용하는 것처럼 보입니다. 이것은 아마도 프로그래밍의 기능적 스타일과 비 기능적 스타일을 효과적으로 지원하기위한 것입니다. 그러나 유비 쿼터스의 디자인에서 비 기능적 스타일을 향한 특별한 편견이있는 것
나는 길이가 다른 두 목록에 어려움을 겪고 있습니다. (f '(8 1 2 3 23 12) '(2 9 4 6))는 (1 2 3 4 6 8 9 12 23) 이 내 노력 코드를 반환해야합니다. (defun f (lst lst2)
(cond ((or(null lst) (null lst2)) 0)
(t (sort (cons (first lst) (
Common Lisp는 객체 복사를위한 많은 기능을 제공합니다. 즉, copy-list, copy-alist, copy-seq, copy-structure, copy-tree 및 copy-symbol이다. 그러나 copy-symbol은 다른 것보다 다소 다르게 작동하는 것 같습니다. (setq riddle "gifted magician") ;set some
그래서 나는 이차 방정식의 두 뿌리 평가하고 목록에이 간단한 표현이 있습니다 (defun QUADRATIC (A B C) (list (/ (+ (- B) (sqrt(- (* B B) - (* 4 A C)))) (* 2 A)) (/ (- (- B) (sqrt(- (* B B) - (* 4 A C)))) (* 2 A))))
을하지만을 나는 어떤 세와 CLI