Scheme 从方案列表中删除空元素
调用(数字中的过滤器?'(a2(13)b7))产生(()2()()7)Scheme 从方案列表中删除空元素,scheme,nonblank,Scheme,Nonblank,调用(数字中的过滤器?'(a2(13)b7))产生(()2()()7) 如何从生成的列表中跳过空元素以获得(27)的最终结果 问题是您正在将sxpr中的过滤器映射到列表。您可以运行另一个筛选器过程来删除空值,或者在aux中使用修改过的筛选器,如下所示: (define filter-in (lambda (predicate list) (let((f (lambda (l) (filter-in-sexpr predicate l))))
如何从生成的列表中跳过空元素以获得(27)的最终结果 问题是您正在将sxpr中的过滤器映射到列表。您可以运行另一个筛选器过程来删除空值,或者在aux中使用修改过的筛选器,如下所示:
(define filter-in
(lambda (predicate list)
(let((f
(lambda (l)
(filter-in-sexpr predicate l))))
(map f list))))
(define filter-in-aux
(lambda (pred lst)
(if (null? lst) '()
(cons (filter-in-sexpr pred (car lst))
(filter-in-aux pred (cdr lst))))))
(define filter-in-sexpr
(lambda (pred sexpr)
(if (equal? (pred sexpr) #t)
sexpr
'())))
(define filter-in-aux
(lambda (pred lst)
(if (null? lst) '()
(let ((h (filter-in-sexpr pred (car lst)))
(t (filter-in-aux pred (cdr lst))))
(if (null? h) t
(cons h t))))))