我该如何改变
(count-fruit ’(apple banana banana orange peach))
到'((apple 1) (banana 2) (orange 1) (grape 0)
(peach 1)))
请注意,葡萄也是一种存在的水果,因此我们无法从列表中将其消除
答案 0 :(得分:-1)
首先考虑
(map (lambda (x) (cons x 0)) '(apple banana banana orange peach))
这会产生
((apple . 0) (banana . 0) (banana . 0) (orange . 0) (peach . 0))
接下来,您可以使用计数器来增加数字。
(let ((counter 0))
(lambda (x)
;; you need to store the result (cons x counter)
;; in a temporary variable using LET here
;; then use SET! to increment counter
;; then return the temp
))
我刚刚提供了一个模板来帮助您入门,如果您在完成过程中遇到困难,请随时提出后续问题。希望这些想法很明确。