這是一個家庭作業:方案,將lambda作爲函數參數 - 需要幫助理解ARGS
返回包含滿足給定謂詞指定列表中的所有元素的列表。例如,
(filter (lambda (x) (< x 5)) '(3 9 5 8 2 4 7))
應該返回(3 2 4)。
我昨天剛剛開始計劃,所以我是一個完整的noob。如果我正確理解這個函數函數調用的語法,那麼「filter」是函數,「(lambda(x)(< x 5)」是參數。這與java中的匿名函數類似嗎?
編輯:
我發現了一些代碼從計算器另一篇文章中他們只是直出回答了這個問題:這是他們寫的東西:
(define (my-filter pred lst)
(cond ((null? lst) null)
((pred (first lst))
(cons (first lst) (my-filter pred (rest lst))))
(else (my-filter pred (rest lst)))))
這是很好的,和它的作品,但在此之前我使用任何我想了解它。「pred」是一個函數,但在這種情況下,它們正在傳遞(< x 5)到它,它是如此莫名其妙地接受這個價值。我不明白。
有人可以向我解釋在這個程序中會發生什麼?我不明白正在發生的事情背後的邏輯。
只是一個迂腐的筆記。 Java沒有匿名函數。它有匿名類,通常用於模擬「lambda」。 – 2012-04-27 01:33:21
歷史記錄:在2012年,Java沒有匿名函數(也稱爲「閉包」)......但從Java 8(iirc)開始,它現在可以實現。 – 2017-07-11 07:46:54