好的,我是新的計劃/ racket/lisp。我正在練習創建自己的函數,語法和遞歸,所以我想使自己的foldl
和foldr
函數完全符合預定義的版本。我不能這樣做,因爲我只是不明白這些功能是如何工作的。我在這裏看到過類似的問題,但我仍然不明白。一些分解的例子會有所幫助!這裏是我的(不正確)的過程:foldl和foldr如何工作,在一個示例中分解?
(foldl - 0 '(1 2 3 4))
我做0 -(4-3-2-1)
,並獲得2這是正確的答案
(foldl - 0 '(4 3 2 1))
我做0-(1-2-3-4)
,並得到8,但它應該是-2。
(foldr - 0 '(1 2 3 4))
我做0-(1-2-3-4)
並再次獲得8,但它應該是-2。
(foldr - 0 '(4 3 2 1))
我做0-(4-3-2-1)
並得到2這是正確的答案。
我在做什麼錯?
您可能會發現在此頁面上的討論也很有用:http://stackoverflow.com/questions/39018163/expanded-form-of-fold-in-racket – rnso