缩减列表(dr racket)
我是Dr Racket的初学者,现在我正在寻找减少嵌套列表的解决方案 例如:缩减列表(dr racket),racket,Racket,我是Dr Racket的初学者,现在我正在寻找减少嵌套列表的解决方案 例如: +0(列表12(列表3(列表4 5)6)7(列表8))空9)) 应该生产45个 我当前的函数只适用于普通列表,但只要列表中有一个列表,它就不再工作了 (define (reduce fun neutral lst) (cond ((empty? lst) neutral) (else (fun (car lst) (reduce fun neutral (
+0(列表12(列表3(列表4 5)6)7(列表8))空9))
应该生产45个
我当前的函数只适用于普通列表,但只要列表中有一个列表,它就不再工作了
(define (reduce fun neutral lst)
(cond
((empty? lst) neutral)
(else
(fun (car lst)
(reduce fun neutral (rest lst))))))
您必须考虑<代码>(CARLST)< /C> >也是一个列表。在这种情况下,在应用
fun
之前,您还需要减少(汽车lst)
(define (reduce fun neutral lst)
(cond
[(empty? lst)
neutral]
[(list? (car lst))
(fun (reduce fun neutral (car lst))
(reduce fun neutral (rest lst)))]
[else
(fun (car lst)
(reduce fun neutral (rest lst)))]))