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