2

手順のリストがある場合。foldr次の呼び出しにどのように使用できますか?Like(new abs)=>(new(abs x))注:foldrプロシージャを返す必要があります。

私は持っています

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

しかし、これはエラーを引き起こしています...

4

2 に答える 2

0

に渡される最初のプロシージャには、次foldrのような2つのパラメータが必要です。

(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は実行されるプロシージャーであり、2つの引数を受け取ります。最初のパラメーターはリスト内の現在の値であり、2番目のパラメーターはこれまでの累積値です。
  • の2番目のパラメーターfoldrは初期値です。恒等関数を渡しているのではないかと疑われていますが、正しくないに違いありません。
  • の3番目のパラメーターfoldrは、処理されるリストです。
于 2013-01-23T01:10:58.283 に答える
0

foldrの2番目の引数は、結果の初期値である必要があります。通常は空のリストです。

于 2013-01-23T01:11:53.227 に答える