我需要一些幫助來理解這段代碼的作用。我不確定fcombine
變量的作用是什麼?有人可以給我一個代碼正在做什麼的演練嗎?理解LISP中代碼片段的問題
(define (reduce fcombine L)
(cond
((null? (cdr L)) (car L))
(#t (fcombine (car L) (reduce fcombine (cdr L))))))
我需要一些幫助來理解這段代碼的作用。我不確定fcombine
變量的作用是什麼?有人可以給我一個代碼正在做什麼的演練嗎?理解LISP中代碼片段的問題
(define (reduce fcombine L)
(cond
((null? (cdr L)) (car L))
(#t (fcombine (car L) (reduce fcombine (cdr L))))))
您可以查看CLHS reduce function規範。
你已經顯示的功能是部分實現全規格的,只用功能和序列參數。
請注意,這不是一個Common Lisp程序 - 它是一個Scheme程序,這是Scheme中非常典型的'reduce'版本。 –
我已經認識到它是方案代碼:)另請參見@dyoo提供的關於'fold- *'的有用信息的評論。 – msandiford
您可以在這裏查看CLHS'reduce'函數規範:http://www.lispworks.com/documentation/HyperSpec/Body/f_reduce.htm您已經顯示的函數是完整規範的部分實現。 – msandiford
謝謝你,你能否給出答案,我可以接受它? – cougar
只需注意:這與* fold-right *函數的定義非常相似,只不過這裏的初始累加器是列表的最後一個元素。它本質上是一個遍及* L *的循環,在我們訪問單個元素時使用* fcombine *來累積一些結果。這個* reduce *函數在空列表上不起作用,所以它比* fold-right *少一些。 – dyoo