gpt4 book ai didi

functional-programming - 如何从列表中删除给定的符号?

转载 作者:行者123 更新时间:2023-12-02 05:05:50 27 4
gpt4 key购买 nike

我正在尝试从列表中删除给定的符号。

这是我写的代码:

(define member?
(lambda (in-sym in-seq)
(if (and (symbol? in-sym) (sequence? in-seq))
(if (null? in-seq)
'()
(append
(if (equal? in-sym (car in-seq)) '() (list (car in-seq)))
(member? in-sym (cdr in-seq)))))))

事实证明,我删除了给定符号的所有出现,尽管我只想删除第一次出现的。有人可以帮我解决这个问题吗?

最佳答案

您可以为此使用内置程序,检查您的解释器是否提供了 remove :

(remove 'b '(a b b c b))
=> '(a b c b)

现在,如果您打算自己实现该功能,我建议您将问题分为两部分:一个过程检查该过程是否可以执行(如果 inSymbol 是一个符号并且 inSeq 是一个序列),另一个 remove-member 执行实际的数据删除:

(define member?
(lambda (inSym inSeq)
(if (and (symbol? inSym) (sequence? inSeq)) ; can remove?
(remove-member inSym inSeq) ; then remove!
'can-not-remove))) ; otherwise, present an error message

(define remove-member
(lambda (inSym inSeq)
(cond ((null? inSeq)
'())
((equal? (car inSeq) inSym)
(cdr inSeq))
(else
(cons (car inSeq)
(remove-member inSym (cdr inSeq)))))))

关于functional-programming - 如何从列表中删除给定的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16308245/

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