gpt4 book ai didi

lisp - 如何在 common lisp 中递归附加列表?

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:30 25 4
gpt4 key购买 nike

(defun foo (in i out)
(if (>= i 0)
(progn
(append (list (intern (string (elt in i)))) out)
(print output)
(foo in (- i 1) out )
)
(out)
)
)

(print (foo "abcd" (- (length "abcd") 1) (list)))

我正在尝试将此字符串返回为 (a b c d)。但它确实返回 nil 作为输出。我在这里做错了什么?谢谢

最佳答案

我不知道这和追加有什么关系。我认为你想要的输出也很奇怪,你不应该做你正在做的事情。字符的正确对象是字符而不是符号。尽管如此,获取列表 (a b c d) 的好方法如下:

CL-USER> '(a b c d)

在运行时驻留符号很奇怪,所以你可能会喜欢这样:

(defconstant +alphabet+ #(a b c d e f g h i j k l m n o p q r s t u v w x y z))

(defun foo (seq)
(map 'list
(lambda (char)
(let ((index (- (char-code char) (char-code #\a))))
(if (< -1 index (length +alphabet+))
(svref +alphabet+ index)
(error "not in alphabet: ~c" char))))
seq))

关于lisp - 如何在 common lisp 中递归附加列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58472056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com