gpt4 book ai didi

LISP 查找和替换

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

我目前正在处理一些初学者的 Lisp 问题。我正在使用 Common Lisp。

下面我尝试实现一个基本的查找和替换:char1 是要在列表中搜索的字符,char2 是要替换它的字符,list-to-search 是我正在搜索的列表。

(defun find-and-replace (char1 char2 list-to-search &optional (ammended-list(list)))
(cond
((null list-to-search) ammended-list)
((eql char1 (car list-to-search))
(append ammended-list (list char2))
(find-and-replace char1 char2 (cdr list-to-search)))
(t (append ammended-list
(list (car list-to-search))
(find-and-replace char1 char2 (cdr list-to-search))))))

当我运行时:

(find-and-replace '1 'z '(1 2 3 1 4 5)) => (2 3 4 5)

如我所料:

(z 2 3 z 4 5)

最佳答案

问题:

1 是一个数字。 z 是一个符号。您的代码与字符无关,它们是 Common Lisp 中的实际数据类型。

如果没有适当的格式和缩进,Lisp 编程将变得极其困难。

append 函数没有副作用。

append 应该避免,因为它昂贵

由于使用了递归,您的函数可以使用的列表的长度受到堆栈大小的限制。通常 on 可能会使用 mapcar 代替。

关于LISP 查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785474/

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