我对计划很新,并一直在玩它,我给自己的一个问题是从一个元素列表中删除所有符号。
(define lst '(a 2 3 a 2 d 3))
(define removeSymbol
(lambda (lst)
(if (null? lst)
'()
(if (symbol? (car lst))
(removeSymbol (cdr lst))
(cons car lst) (removeSymbol (cdr lst))))))
(removeSymbol lst)
我觉得这应该有效,但它没有给我我期待的东西。 我的期望:(清单2 3 2 3)
任何帮助或指导都将不胜感激。
答案 0 :(得分:0)
你提到了你未满足的期望,但没有提到你的结果。
我猜测你发现语法错误(在Racket中,我得到:[None]
),因为嵌套None
的正文包含3个s表达式。
is
如果你将你的parens洗牌,使它们看起来如下,你的功能应该按预期工作:
is
我感谢你,只是通过这个例子作为一个学习练习,但是你尝试做的事情也可以通过前奏函数a = []
b = a
a is [] #false
a is b #true
更加惯用地实现。 ,if: bad syntax; has 4 parts after keyword
和if
:
(if (symbol? (car lst))
(removeSymbol (cdr lst))
(cons car lst)
(removeSymbol (cdr lst)))