fold

    4熱度

    4回答

    : -- This works: foldr go1 [] [1..] -- This doesn't: foldr go2 [] [1..] go1 a b = a : b go2 a [] = a : [] go2 a b = a : b 與go1摺疊馬上開始返回值,但go2似乎等待列表的末尾。 很明顯,模式匹配導致某些東西被不同地處理。有人可以解釋這裏究竟發生了什麼嗎?

    0熱度

    2回答

    我必須遍歷一個列表中包含元素的序列,如Sequence = ["1","2","4","5"]。需要準備9個列表,只能從Sequence計算。我有以下foldl。 Accumulators = {[], [], [], [], [], [], [], [], []}, ReturnedTup = lists:foldl(fun(Seq, Acc) -> {AccF1,AccF2,Ac

    10熱度

    2回答

    如何編寫一個函數,該函數使用ai -> b -> ai類型的函數的元組並返回一個函數,該函數使用元素類型爲ai的元組的元素,並將每個元素組合爲b元素進入ai一個新的元組的: 即簽名應該像 f :: (a1 -> b -> a1, a2 -> b -> a2, ... , an -> b -> an) -> (a1, a2, ... , an) -> b -> (a1,

    3熱度

    3回答

    我們可以看到,我們可以使用reduce/foldl1作爲函數by which we can define other higher order functions such as map, filter and reverse。 (defn mapl [f coll] (reduce (fn [r x] (conj r (f x))) [] coll)) (defn f

    0熱度

    1回答

    由於採用摺疊功能轉換二進制樹列表: type 'a tree = Empty | Node of 'a * 'a tree * 'a tree 用途: let rec tree_fold f e t = match t with | Empty -> e | Node (x, l, r) -> f x (tree_fold f e l) (tree_fold f e r);; 一個二叉

    0熱度

    2回答

    我最近開始使用vim進行摺疊。遺憾的是沒有的情況下非常有用,我宣佈我的功能是這樣的: /** * A function that do something. * @param a A * @param b B * @return Something * **/ int i_do_something(int a, int b) { something(); } 在我的夢

    25熱度

    4回答

    在解釋foldr哈斯克爾新手,規範的定義是 foldr :: (a -> b -> b) -> b -> [a] -> b foldr _ z [] = z foldr f z (x:xs) = f x (foldr f z xs) 但在GHC.Base,foldr被定義爲 foldr k z = go where go [] = z go

    3熱度

    2回答

    實現對於列表中的一個函數映射到每個第n個元素的功能: mapEvery :: Int -> (a -> a) -> [a] -> [a] mapEvery n f = zipWith ($) (drop 1 . cycle . take n $ f : repeat id) 是否有可能與foldr像普通map來實現這一點? 編輯:在標題中,將'文件夾'更改爲'foldr'。自動更正...

    5熱度

    1回答

    我想知道爲什麼下面的代碼在r/fold的情況下沒有提供加速功能?我誤解了減速機的一些事情嗎? 我在一個相當慢的(儘管有2個內核)Ubuntu 12.04 dev盒子上運行它,兩者都通過emacs和lein運行,每個都有相同的結果。 (require '[clojure.core.reducers :as r]) (.. Runtime getRuntime availableProcessors

    2熱度

    3回答

    在此博客條目,"CSP and transducers in JavaScript",筆者指出: 首先,我們必須認識到,許多陣列(或其他集合),如map,filter和reverse操作可以在一個reduce來定義。 我的問題是:如何能像地圖,過濾器和相反的操作可以在一個減少來定義?你能提供Clojure的例子嗎?