higher-order-functions

    3熱度

    4回答

    我想用C++編寫高階函數filter。我想出了到目前爲止的代碼如下: #include <iostream> #include <string> #include <functional> #include <algorithm> #include <vector> #include <list> #include <iterator> using namespace std;

    30熱度

    6回答

    (在多個SEQ映射)假設我有 val foo : Seq[Double] = ... val bar : Seq[Double] = ... ,我希望以產生SEQ其中巴茲(ⅰ)= FOO(ⅰ)+巴(i)中。我能想到的辦法之一是 val baz : Seq[Double] = (foo.toList zip bar.toList) map ((f: Double, b : Double) =>

    2熱度

    1回答

    我有以下代碼: import operator def stagger(l, w): if len(l)>=w: return [tuple(l[0:w])]+stagger(l[1:], w) return [] def pleat(f, l, w=2): return map(lambda p: f(*p), stagger(l, w))

    3熱度

    2回答

    我的影片定義爲搜索樹: data (Ord a) => Stree a = Null | Fork (Stree a) a (Stree a) deriving Show ,我必須定義兩個函數,mapStree: mapStree :: (Ord b, Ord a) => (a -> b) -> Stree a -> Stree b 和foldStree: foldStree :: (Or

    7熱度

    4回答

    C++標準庫和/或Boost是否具有類似於函數式語言中的filter函數? 我能找到的最接近的函數是std::remove_copy_if,但它似乎與我想要的相反。 boost::lambda有任何函數來獲得我的謂詞的否定版本(類似於Haskell中的not)?我可以否定我的謂詞,然後使用std::remove_copy_if。 請注意,我不問如何在C++中編寫filter函數;我只是問標準庫和/

    3熱度

    3回答

    在C#中,可以創建更高階的函數,即。函數g將函數作爲參數。假設我想創建一個給定函數f的函數,並返回擴展其功能的另一個函數。 如何爲返回的增強方法定義參數名稱?的動機是,我正在使用更高階的方法,其中一些產生新的方法..這些可能很難使用,因爲沒有參數名稱等附加到他們。 示出了如何gf和分別可在C#中定義的一個例子: 我定義的方法擴展可以EXTENS方法採取T作爲參數並返回一個S。 static c

    10熱度

    1回答

    我是一個對Haskell感興趣的初學者,爲了更好地理解它,我一直試圖實現flatmap(>> =)。目前我有 flatmap :: (t -> a) -> [t] -> [a] flatmap _ [] = [] flatmap f (x:xs) = f x : flatmap f xs 它實現了「地圖」部分,但不是「平」。 大部分的修改我做出令人沮喪的,公正無信息 Occurs chec

    2熱度

    2回答

    我剛將原型組元升級到記錄。有一天它可能會成爲一個真正的階級。在此期間,我想這樣的轉換代碼: type Example = int * int let examples = [(1,2); (3,4); (5,6)] let descs = Seq.map (fst >> sprintf "%d") examples 這樣: type Example = { Field1 : in

    1熱度

    3回答

    的想法是多個維度走過去,每一個定義爲範圍 (* lower_bound, upper_bound, number_of_steps *) type range = real * real * int 所以像fun foo y x或fun foo z y x功能可以應用到整個正方形X Y或立方體X Y * Z. SML/NJ不喜歡我下面的實現: test2.sml:7.5-22.6 Error

    7熱度

    5回答

    正如你可能知道,有OCaml中高階函數,如fold_left,fold_right,過濾等 在我的函數式編程過程中已經引入的功能命名fold_tree,這是一樣的東西fold_left /對,不在列表上,但在(二進制)樹上。它看起來像這樣: let rec fold_tree f a t = match t with Leaf -> a | Node (l, x, r