2

如果我有一个程序清单。怎么能用foldrnext来电?Like (new abs) => (new (abs x)) 注意:foldr应该返回一个过程。

我有

 (define next 
    (lambda (ls)
      (foldr (lambda (x) x) (lambda (x) x) ls)))

但这给出了一个错误......

4

2 回答 2

0

传递给的第一个过程foldr必须有两个参数,如下所示:

(define next
  (lambda (ls)
    (foldr (lambda (x a) <???>) ; It's not clear what do you want to do inside
           (lambda (x) x)       ; this is the identity function, what's it for?
           ls)))

只是要清楚:

  • to的第一个参数foldr是要执行的过程,它接收两个参数:第一个是列表中的当前值,第二个是到目前为止的累积值
  • to的第二个参数foldr是初始值,你在传递身份函数很可疑,我敢打赌这是不对的
  • 第三个参数tofoldr是要处理的列表
于 2013-01-23T01:10:58.283 回答
0

foldr 的第二个参数应该是结果的初始值,通常是一个空列表。

于 2013-01-23T01:11:53.227 回答