functional-programming相关内容
如何调用以下函数才能计算从1到100的数字? type 'a llist = Cons of 'a * (unit -> 'a llist) let rec lnat n = Cons (n, fun () -> lnat (n+1)) 调用lnat 1给我以下信息: lnat 1;; - : int llist = Cons (1, ) 但如何计算以下数字?
..
在Scala中,view允许防止创建全新的集合。 例如In Scala, what does "view" do? 在JavaScript中有类似的东西吗? 我的使用案例: x = inputValue.split(",").map(x => x.trim()).filter(f1).map(f2) 正如您在上面的代码中看到的,将创建两个中间集合。在JavaScript中有什么方法
..
在Haskell中寻找一个可以展平任意深度嵌套列表的函数,即递归地应用concat并在最后一次迭代时停止(使用非嵌套列表)的函数时,我注意到这需要有一个更灵活的类型系统,因为随着列表深度的变化,输入类型也会有所不同。事实上,有几个堆栈溢出问题--例如this一个--其中响应指出,不存在将在不同深度‘查看’不同嵌套列表的函数。 编辑:有些答案在Haskell中提供了解决办法,用于自定义数据类型,或
..
我正在尝试做的事情 我希望迭代一个Tibble并创建多个serveEvent。下面我有一个可重复使用的例子。注释掉的代码可以工作,但我想使用pwalk以编程方式创建观察事件。 基本上,我正在尝试实现与本文类似的内容:using purrr::walk to instate multiple event observers。 (尽管目标不同。我的目标是在某一选定输入发生更改时,跨多个选项
..
谁能解释一下Optional如何帮助我们避免NullPointerException? Optional op = someFunc() if(op.isPresent()) { op.get(); } String possibleNull = op.get(); 此代码不是也易于NullPointerException吗?如果是,那么为什么首选此代码而不是
..
有没有办法提升一个简单的函数,就像这样 fn add(a:i32, b:i32) -> i32 {a+b} 对Option(或任何其他一元类型)进行操作,类似于在Haskell中使用Applicative 我知道此解决方案: pub fn add(a: Option, b: Option) -> Option { Some(a? + b?)
..
我收到以下错误“and::中的语法不正确”: (define test (lambda(list1 a b c d) (cond (null? list1) (and (eqv? a b) (eqv? c d)) (two-subsets (cdr list1) a b c d)))) (test '(1 2 3 4) 0 0 0 0) 本质上,我尝
..
我有一个对象,其参数包含对象的和数组。我收到1个对象ID,我需要在整个混乱中找到它的位置。通过过程性编程,我使其能够正常工作: const opportunitiesById = { 1: [ { id: 1, name: 'offer 1' }, { id: 2, name: 'offer 1' } ], 2: [ { id: 3, name: 'of
..
为什么在第一次迭代时,Java脚本的Reducer实现会跳过执行? [1,2,3].reduce((acc, val) => { console.log('acc',acc); console.log('val',val) return acc + val; }); // acc 1 // val 2 // acc 3 // val 3 // 6 我注意到第一条语
..
我已经坚持了8天了。 假设下面是我的响应对象数组: var items = [ { name: 'dell-66', price: 200, id: 12, }, { name: 'hp-44', price: 100, id: 10, }, { name: 'acer-33', price: 250, id: 3
..
我一直在尝试理解新的范围库,并尝试将一些更传统的for循环转换为函数代码。cppreference给出的示例代码非常简单易懂。但是,我不确定如何对需要查看、计算和比较每个x和y值的点向量应用范围,最后哪个值的距离最大。 struct Point { double x; double y; } double ComputeDistance(const Point& p1, const
..
对于函数monad,我发现()和(>>=)/(=) :: (r -> a -> b) -> (r -> a) -> (r -> b) (= r -> b) -> (r -> a) -> (r -> b) 就像()和(>>=)/(=
..
我最近涉足了函数式编程的迷人世界,这主要是因为我获得了像Reaction这样的FP平台的经验,并在https://blog.ploeh.dk/之类的博客上阅读了这些经验。作为一名主要的命令式程序员,这是一个有趣的转变,但我仍然在努力摸索自己的脚步。 我有点厌倦了这样使用string.IsNullOrEmpty。很多时候,我发现自己在代码中使用 这样的表达式 _ = string.IsNu
..
这里有类似的问题,但它们与特定的编程语言有关,我正在寻找概念级别的答案。 据我所知,函数器本质上是不变的容器,它公开派生另一个函数器的map()API。哪项添加使将特定的函数器称为单体成为可能? 据我所知,每个单子都是函子,但并不是每个函子都是单子。 推荐答案 (请注意,这将是对范畴理论概念的简化解释) 函数器 函数器是从一组值a到另一组值a -> b的函数。对于编
..
我是新手,我正在尝试执行以下功能: 调用userservice.LoginWebApp() 如果返回User,则返回User类型的ResponseEntity。如果为空,则返回“字符串”类型的ResponseEntity 以下代码提供了一个类型错误,因为.defaultIfEmpty()需要类型为User的ResponseEntity。您能建议正确的操作符/方法来实现此功能吗?
..
我原以为4是序列数组的一部分,但为什么跳过了? function* generate() { yield 1; yield 2; yield 3; return 4 } let sequence = [...generate()]; console.log(sequence); // 1, 2, 3 推荐答案 生成函数的return值不被视为序列的一部分。上次.nex
..
我有此对象: let obj = { matrimonyUrl: 'christian-grooms', search_criteria: 'a:2:{s:6:"gender";s:4:"Male";s:9:"community";s:9:"Christian";}', mothertongue: null, religion: 'Christian', cast
..
我在编写Clojure之后编写了一段时间的python,我有点生疏了,但我正在以一种更实用的方式来处理它。为了遵循我在Clojure中使用的模式,我想使用map(或列表理解)和类似于assoc的东西在列表中的每个词典中设置关键点。 我有一个记录列表,我想用列表理解重新构造它们。 记录如下所示: { "timestamp":1232435235315, "data": {
..
this answer中描述并得到this基准支持的结果令我震惊,该基准将该解决方案(原生JavaScript)与the one I proposed (Lodash)进行比较。 我还比较了建议的解决方案: const obj = { name: undefined, age: 15, school: 'Some school' } const hasOnly = (ob
..
这里有一个JavaScript对象, const obj = {a: [{ id: 1 }, {id: 1}, {id: 2}, {id: 3}], b: [{ id: 4 }, {id: 5}, {id: 5}, {id: 6}] }; 下面的代码按.id对两个数组ojb.a和obj.b中的每个数组中的.id正确分组, const res1 = _.map(obj, x => _
..