使用带有方案的foldr

时间:2013-01-23 00:59:34

标签: scheme

如果我有一份程序清单。 foldr怎样才能用来接听电话? 喜欢(新abs)=> (新(abs x)) 注意:foldr应该返回一个过程。

我有

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

但这是错误的......

2 个答案:

答案 0 :(得分: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)))

要明确:

  • foldr的第一个参数是要执行的过程,它接收两个参数:第一个是列表中的当前值,第二个是到目前为止的累计值
  • foldr的第二个参数是初始值,你怀疑你传递了身份功能,我打赌这不对。
  • foldr的第三个参数是要处理的列表

答案 1 :(得分:0)

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