fold

    2熱度

    1回答

    對於數組a的元素上的關聯操作f,以下關係應該爲真:a.reduce(f)應等於a.reduceRight(f)。 事實上,它確實適用於同時具有關聯性和可交換性的操作。對於 例如: var a = [1,2,3,4,5,6,7,8,9,0]; alert(a.reduce(add) === a.reduceRight(add)); function add(a, b) {

    12熱度

    3回答

    過去幾天我一直在研究褶皺。我可以用它們實現簡單的功能,如length,concat和filter。我所堅持的是試圖用foldr功能來實現,如delete,take和find。我已經實現了這些顯式遞歸,但它似乎並不明顯如何將這些類型的函數轉換爲正確的摺疊。 我已經研究了Graham Hutton和Bernie Pope的教程。仿效Hutton的dropWhile,我能夠使用foldr實現delete

    3熱度

    3回答

    Python的reduce是一個左邊的摺疊,這意味着它是尾遞歸的,它的使用可以整齊地重寫爲一個循環。但是,Python沒有內置函數來執行正確的摺疊。由於右褶最自然地用遞歸方式編寫(而且Python不像函數式語言那樣喜歡遞歸),所以我有興趣根據生成器編寫正確的摺疊(foldr)。 這怎麼辦?具體而言,Python 2.7如何實現? 編輯:我應該提到foldr的好處之一是,你有時可以在無限列表上摺疊,

    0熱度

    2回答

    我想我需要像fold或foldt這樣的東西,但我見過的例子似乎只是將列表壓縮成一個簡單的標量值。 我需要什麼需要記住如果我的輸入數據看起來像在列表上線(基本上是一個「分組依據」操作) 再利用價值: [["order1", "item1"],["", "item2"],["","item3"],["order2","item4"]] 是什麼正確的做法,結束了類似: [["order1",["item

    0熱度

    1回答

    我是否應該將摺疊概念化爲「摺疊列表至右側」或「從摺疊列表」? 換句話說,沒有一個正確倍,從向左走向右或從右到左?

    0熱度

    2回答

    我試圖使用foldr從int列表中獲得交替總和,但不斷收到運算符/操作數不匹配錯誤。我有一種感覺,我不能完全理解foldr l = [1,3,5,7,9] foldr (op-) l 我期待有輸出是 1 - 3 + 5 - 7 + 9 = 5 編輯: 我實際上是被要求用一個匿名功能與foldr 因此,例如 l = [1,3,5,7,9] foldr (fn (x, y): => x -

    4熱度

    1回答

    我最初提出了我的函數作爲一個解決方案,其中myTakeWhile將(x:xs)的元素作爲列表返回,直到到達函數參數等於false的元素。之後提出了另一個解決方案,如下所示。 myTakeWhile :: (a -> Bool) -> [a] -> [a] myTakeWhile p [] = [] myTakeWhile p (x:xs) = if p x then x : myTakeWh

    6熱度

    2回答

    什麼是一個List[A]應用功能A => Try[B]並返回慣用的方式或者第一成功的結果Some[B](它出現短路),或者如果這些都失敗,返回None 我想要做這樣的事情: val inputs: List[String] = _ def foo[A, B](input: A): Try[B] = _ def main = { for { input <- inputs

    1熱度

    1回答

    通過傳遞resultSelector函數或直接將Aggregate結果值傳遞給函數來使用LINQ Aggregate方法時,是否有實際區別? 代碼示例(有更好的方式來做到這一點,但是這說明了什麼問題相當不錯): var list = new string[] { "a", "b", "c" }; list.Aggregate(new StringBuilder(), (sb, s) => sb.

    0熱度

    4回答

    從我如何摺疊作品的理解,給出一個整數數組和一些現有的值(比如2) val = 2 arr = [1,2,3] 我可以說 arr.inject(val) do |r, val| r += val end 要按特定順序(從左到右?)將所有元素添加到指定值。 所以,現在如果我有而不是像整數數組的數組這 val = 2 arr = [ [1], [2], [3] ] 我的邏輯是