在Scheme中迭代

时间:2011-09-15 06:59:17

标签: recursion scheme racket

假设我在Scheme中有一个列表列表,如下所示:

 (define a-list  (list (list a b) (list c d) (list e f) (list g h) (list i j)))

我如何定义一个消耗此列表的函数,以便我可以使用另一个函数来使用列表中的每个字母?

例如,我有另一个功能

(define (smorg a)
  (...))

那么,我怎么去做smorg a,smorg b,smorg c ......?

2 个答案:

答案 0 :(得分:6)

你在用什么教科书?

如果答案是如何设计程序,请按照设计方法进行操作。特别是,您需要一个数据定义;数据定义用于生成模板,该模板告诉您如何正确获取递归。

如果您没有使用HtDP,我强烈建议您阅读。这本书可以在线获取:http://www.htdp.org/。然后按照设计配方。特别是,您需要数据定义等等。

在任何一种情况下,这里都有一个提示:从不,永远在掌握递归之前使用list函数。不在你的功能中,甚至在你的例子中也没有。它阻碍了你。使用consempty建立您的列表。

答案 1 :(得分:2)

请务必了解list?mapcarcdr的用途。它们可能有用。