List 是否从列表(方案)中删除符号?
我对scheme相当陌生,一直在玩弄它,我给自己带来的一个问题是从单个元素列表中删除所有符号List 是否从列表(方案)中删除符号?,list,scheme,symbols,List,Scheme,Symbols,我对scheme相当陌生,一直在玩弄它,我给自己带来的一个问题是从单个元素列表中删除所有符号 (define lst '(a 2 3 a 2 d 3)) (define removeSymbol (lambda (lst) (if (null? lst) '() (if (symbol? (car lst)) (removeSymbol (cdr lst))
(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)
任何帮助或指导都将不胜感激。您提到了您未实现的期望,但没有提到您的结果 我猜您看到了一个语法错误(在Racket中,我得到:
if:bad syntax;在关键字之后有4个部分),因为嵌套的if
的主体包含3个s表达式
(if (symbol? (car lst))
(removeSymbol (cdr lst))
(cons car lst)
(removeSymbol (cdr lst)))
如果将参数重新排列,使其看起来如下所示,则函数应按预期工作:
(define lst '(a 2 3 a 2 d 3))
(define (removeSymbol lst)
(if (null? lst)
'()
(if (symbol? (car lst))
(removeSymbol (cdr lst))
(cons (car lst) (removeSymbol (cdr lst))))))
(removeSymbol lst) ;; '(2 3 2 3)
我很感激您只是将此示例作为一个学习练习,但您尝试做的事情也可以(可以说)更习惯地使用前奏功能过滤器,否定和符号?
:
(filter (negate symbol?) lst) ;; '(2 3 2 3)
你提到了你未实现的期望,但没有提到你的结果
我猜您看到了一个语法错误(在Racket中,我得到:if:bad syntax;在关键字之后有4个部分),因为嵌套的if
的主体包含3个s表达式
(if (symbol? (car lst))
(removeSymbol (cdr lst))
(cons car lst)
(removeSymbol (cdr lst)))
如果将参数重新排列,使其看起来如下所示,则函数应按预期工作:
(define lst '(a 2 3 a 2 d 3))
(define (removeSymbol lst)
(if (null? lst)
'()
(if (symbol? (car lst))
(removeSymbol (cdr lst))
(cons (car lst) (removeSymbol (cdr lst))))))
(removeSymbol lst) ;; '(2 3 2 3)
我很感激您只是将此示例作为一个学习练习,但您尝试做的事情也可以(可以说)更习惯地使用前奏功能过滤器,否定和符号?
:
(filter (negate symbol?) lst) ;; '(2 3 2 3)
我在学习中还没有遇到过过滤器。谢谢你的建议和意见!是的,你们确定我的结果是正确的。我在学习中还没有遇到过过滤器。谢谢你的建议和意见!是的,你确定我的结果是正确的。