0

について学び始めていlambdaます。foldrまたはfoldlで使用できる方法はありますlambdaか?誰かが私に簡単な例を教えてもらえますか? ありがとう

4

2 に答える 2

4

たとえば、3 と 4 の 2 乗を加算するには、次のようにします。

(foldl 
  (lambda (val res) (+ (sqr val) res)) 
  0 
  '(3 4))

初期値は 0 です。リスト '(3 4) の各値に対して、値が にバインドされval、前の結果が にバインドされた状態で関数が呼び出されresます。

これは、

(define (fun val res)
  (+ (sqr val) res))

(foldl fun 0 '(3 4))

ただし、最初の例では関数は無名です。

于 2013-11-02T16:44:37.597 に答える