两个列表作为输入生成列表 - 方案

时间:2014-11-26 19:15:37

标签: list input scheme racket

作为参考,我使用Scheme编译DrRacket

我正在尝试使用tally-by-alllist-of-candidates函数list-of-votes在已经定义的辅助函数的帮助下输出list-of-voting-tallies { {1}}。

当我按原样运行时,会发生错误,因为辅助函数top-votes-for会消耗top-votes-forstring,因此它无法完全消耗list-of-votes代替list-of-strings,至少我是这么认为的。

我应该得到的输出是:

string

请记住,除(cons (make-voting-tally "Blake" 2) (cons (make-voting-tally "Ash" 0) (cons (make-voting-tally "Bob" 1) (cons (make-voting-tally "Will" 0) (cons (make-voting-tally "Joey" 0) empty))))))

的定义外,程序中的所有内容都是正确的

非常感谢任何协助。

提前谢谢!

这是我的计划:

tally-by-all

1 个答案:

答案 0 :(得分:1)

我认为你想要的是递归候选人名单(aloc),并且每个人都可以从所有投票计算他/她的记录:

(define (tally-by-all aloc alov)
  (cond
    [(empty? aloc) empty]
    [else (cons (make-voting-tally (first aloc) (top-votes-for (first aloc) alov))
                (tally-by-all (rest aloc) alov)))]
    )
  )