手順のリストがある場合。foldr
次の呼び出しにどのように使用できますか?Like(new abs)=>(new(abs x))注:foldr
プロシージャを返す必要があります。
私は持っています
(define next
(lambda (ls)
(foldr (lambda (x) x) (lambda (x) x) ls)))
しかし、これはエラーを引き起こしています...
手順のリストがある場合。foldr
次の呼び出しにどのように使用できますか?Like(new abs)=>(new(abs x))注:foldr
プロシージャを返す必要があります。
私は持っています
(define next
(lambda (ls)
(foldr (lambda (x) x) (lambda (x) x) ls)))
しかし、これはエラーを引き起こしています...
に渡される最初のプロシージャには、次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)))
ただ明確にします:
foldr
は実行されるプロシージャーであり、2つの引数を受け取ります。最初のパラメーターはリスト内の現在の値であり、2番目のパラメーターはこれまでの累積値です。foldr
は初期値です。恒等関数を渡しているのではないかと疑われていますが、正しくないに違いありません。foldr
は、処理されるリストです。foldrの2番目の引数は、結果の初期値である必要があります。通常は空のリストです。