functional-programming相关内容

什么是“销"?运算符 for 和 Elixir 变量是否可变?

目前正在尝试理解 Elixir 中的“^"运算符.来自网站: 没有兴趣重新绑定时可以使用pin操作符^一个变量,而是匹配它之前的值匹配: 来源 - http://elixir-lang.org/getting_started/4.html 考虑到这一点,您可以像这样为符号附加一个新值: iex>x = 1 # 输出“1"即>x = 2 # 输出“2" 我也可以: iex>x ..

这是纯函数吗?

大多数来源将纯函数定义为具有以下两个属性: 对于相同的参数,它的返回值是相同的. 它的评估没有副作用. 这是我关注的第一个条件.在大多数情况下,很容易判断.考虑以下 JavaScript 函数(如 this文章) 纯: const add = (x, y) =>x + y;添加(2, 4);//6 不纯: 让 x = 2;const add = (y) =>{返回 x + ..
发布时间:2022-01-02 13:45:55 前端开发

我应该如何看待 Scala 的 Product 类?

“scala"包有许多类,名为 Product、Product1、Product2,依此类推,直到 Product22. 这些类的描述肯定是准确的.例如: Product4 是 4 个分量的笛卡尔积 准确,是的.沟通?没那么多.我希望对于已经理解此处使用的“笛卡尔积"含义的人来说,这是一个完美的措辞.对于不知道的人来说,这听起来有点循环.“哦,是的,当然 Product4 是 4 个 m ..
发布时间:2022-01-02 13:45:38 其他开发

Map、parseInt 的奇怪行为

可能的重复: javascript - Array.map 和 parseInt 我在 Twitter 上在推特上看到了这个奇怪的 JavaScript 行为示例 ['10','10','10','10','10'].map(parseInt) 评估为 [10, NaN, 2, 3, 4] 有人可以解释这种行为吗?我在 chrome 和 firebug 中验证过 ['10','1 ..
发布时间:2022-01-02 13:45:29 前端开发

使用宏“高阶函数"在 C 中进行函数式编程发电机

请注意,因为这是一个地狱般的问题;-) 我想在 C 中将模板函数用于泛型集合操作(​​如搜索、foreach 等),同时保持编译器静态类型检查.当您使用像本例中这样的简单回调时,这是相当简单的: #define MAKE_FOREACH(TYPE)\void foreach_##TYPE (TYPE[n] array, int n, void(*f)(TYPE)) {\for(int i ..
发布时间:2022-01-02 13:45:07 其他开发

R 中的高级函数 - 是否有官方的 compose 运算符或 curry 函数?

我可以在 R 中创建一个组合运算符: `%c%` = function(x,y)function(...)x(y(...)) 像这样使用: >numericNull = is.null %c% 数字>数字空(myVec)[2] 真假 但我想知道是否有一套官方的函数来做这种事情和其他操作,例如在 R 中进行柯里化.主要是为了减少我代码中的括号、函数关键字等的数量. 我的咖喱函数: ..
发布时间:2022-01-02 13:44:53 其他开发

闭包:为什么它们如此有用?

作为 OO 开发人员,我可能很难看到它的价值.他们提供了什么附加价值?它们适合面向对象的世界吗? 解决方案 闭包不会给你任何额外的力量. 有了它们你可以实现的任何事情,没有它们也能实现. 但是它们对于使代码更清晰易读非常有用.众所周知,干净可读的短代码是一种更易于调试且包含更少错误的代码. 让我给您简短的 Java 示例,说明可能的用法: button.addActi ..
发布时间:2022-01-02 13:44:43 其他开发

计算列表的移动平均线

这个周末我决定尝试一些 Scala 和 Clojure.我精通面向对象编程,因此 Scala 很容易作为一门语言学习,但想尝试函数式编程.这就是它变得困难的地方. 我似乎无法进入编写函数的模式.作为专业的函数式程序员,您如何解决问题? 给定一个值列表和一个定义的求和周期,您将如何生成列表的简单移动平均线的新列表? 例如:给定列表 values (2.0, 4.0, 7.0, 6. ..
发布时间:2022-01-02 13:44:34 其他开发

在不使用 Promise 的情况下按顺序执行回调

我正在尝试按顺序执行以下函数数组(避免 callbackHell)以实现函数 runCallbacksInSequence(我需要实现自己的函数以了解回调如何工作并避免使用 Async.js).这是我到目前为止所拥有的.我不太明白回调是如何工作的,这就是我做这个练习的原因.如果您有任何想法,请告诉我我做错了什么以及如何解决. function first(cb) {console.log(' ..
发布时间:2022-01-02 13:44:10 前端开发

如何为延续 monad 实现堆栈安全的 chainRec 运算符?

我目前正在试验延续 monad.Cont 实际上在 Javascript 中很有用,因为它从回调模式中抽象出来. 当我们处理一元递归时,总会有堆栈溢出的风险,因为递归调用不在尾部位置: const chain = g =>f=>k=>g(x => f(x) (k));= x => 的常量k=>k(x);const id = x =>X;const inc = x =>x + 1;con ..

F# 中的函数应用运算符 ($)?

假设我有这个代码 let identifier = space_surrounded (many1Satisfy isLetter) 我想知道是否有任何原生 F# 函数允许我将其重构为 let identifier = space_surrounded $ many1Satisfy isLetter 也就是说,诸如 之类的东西 let ($) f1 f2 = f1 (f2) (也就是 ..
发布时间:2022-01-02 13:43:32 C#/.NET

没有填充值的 zip_longest

我正在寻找 Python 的 zip 和 zip_longest 函数(来自 itertools 模块)之间的中间地带,它耗尽了所有给定的迭代器,但不填写任何内容.因此,例如,它应该像这样转置元组: (11, 12, 13 ), (11, 21, 31, 41),(21, 22, 23, 24), -->(12, 22, 32, 42),(31, 32), (13, 23, 43),(41, 4 ..
发布时间:2022-01-02 13:43:21 Python

非递归 lambda 演算阶乘函数

如何使用 lambda 演算在不使用递归的情况下编写阶乘函数?意味着只是数学符号而不是任何特定编程语言的实现. 解决方案 如果“不使用递归"是指没有一般递归和因此,没有固定点(或自我应用),我们可以简单地观察到阶乘函数是原始递归的(即本质上是迭代的),并且通过迭代有一个非常通用和简单的原始递归编码(由教堂提供)数字)和对.我将讨论很有启发性的一般情况.让 是一些对的编码,让 ..
发布时间:2022-01-02 13:43:09 其他开发

这可以重构为使用通用功能原则吗?

比较器函数 ascending 接受两个参数 - a 和 b.它必须返回一个比较两者的整数. 我有一个要按名称排序的列表,因此我编写了以下函数. 我可以使用函数式惯用语来组合这两个函数,而不是让 byName 负责组合生成的函数吗? const 升序 = (a, b) =>a.localeCompare(b);const byName = (i) =>i.get('name');co ..
发布时间:2022-01-02 13:43:03 前端开发

传递解析为多种类型的泛型函数的最佳方法是什么

背景:这是功能性 DI 的变体.根据 Scott 的帖子,我写了一个口译员.不同的是,我的解释器是通用的,并且根据你提供给它的内容进行参数化. 出于测试目的,我想传递另一个解释器,这就是问题所在 - 我该怎么做?以下是问题的简化概述: 让 y f =让 a = f 1让 b = f 2L(a,b) f 是我的通用解释器,但在这里它显然受限于第一次使用 int ->'一个.在这个简化的场景 ..
发布时间:2022-01-02 13:42:54 其他开发

PHP 闭包中的 use 关键字是否通过引用传递?

例如,如果我这样做: 功能栏(&$var){$foo = function() 使用 ($var){$var++;};$foo();}$my_var = 0;酒吧($my_var); $my_var 会被修改吗?如果没有,我如何在不向 $foo 添加参数的情况下使其工作? 解决方案 不,它们不是通过引用传递 - use 遵循与函数参数类似的符号. 如所写,您通过将 use 定义为 ..
发布时间:2022-01-02 13:42:43 PHP

循环直到...使用 Ramda

我试图使用 Ramda 重构几段代码,我想知道在 Ramda/函数式编程中什么是解决以下代码的好方法: let arrayOfSomething = initArray();for(let i = 0; SOME_INDEX_CONDITION(i)|| SOME_CONDITION(arrayOfSomething); i++) {常量值 = 操作(arrayOfSomething);cons ..
发布时间:2022-01-02 13:42:36 前端开发