减少清单(球拍博士)
Reducing list (dr racket)
我是 Dr Racket 的初学者,现在我正在寻找减少嵌套列表的解决方案。
例如:
+ 0 (list 1 2 (list 3 (list 4 5) 6) 7 (list (list 8)) empty 9))
应该产生 45.
我目前的功能只适用于普通列表,但一旦列表中有列表,它就不再起作用了。
(define (reduce fun neutral lst)
(cond
((empty? lst) neutral)
(else
(fun (car lst)
(reduce fun neutral (rest lst))))))
你必须考虑 (car lst)
也是一个列表的情况。在这种情况下,在应用 fun
.
之前,您还需要减少 (car 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)))]))
我是 Dr Racket 的初学者,现在我正在寻找减少嵌套列表的解决方案。
例如:
+ 0 (list 1 2 (list 3 (list 4 5) 6) 7 (list (list 8)) empty 9))
应该产生 45.
我目前的功能只适用于普通列表,但一旦列表中有列表,它就不再起作用了。
(define (reduce fun neutral lst)
(cond
((empty? lst) neutral)
(else
(fun (car lst)
(reduce fun neutral (rest lst))))))
你必须考虑 (car lst)
也是一个列表的情况。在这种情况下,在应用 fun
.
(car 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)))]))