functional-programming相关内容

虽然在F#或尾递归,什么时候使用?

有些问题本质上是递归的(建立或读出树状结构来命名一个),然后使用递归。在这些情况下,你最好使用尾递归来给栈一个中断。 有些语言是纯功能的,所以你必须用递归来代替while-即使问题本质上不是递归的 所以我的问题是:既然F#也支持命令范式,你会使用F#中的尾递归来处理那些不是自然递归的问题吗?特别是因为我已经阅读了编译器recongnizes尾递归,只是转换它在一个while循环吗? ..
发布时间:2018-04-18 15:09:55 其他开发

Scala:按键合并地图

假设我有两张地图: val a = Map(1 - >“one”,2 - > “2”,3 - >“3”) val b = Map(1 - >“un”,2 - >“deux”,3 - >“trois”) 我想通过键合并这些映射,应用一些函数来收集值(在这种情况下,我想收集它们进入一个seq,给出: $ pre code> val c = Map(1 - ..
发布时间:2018-04-18 15:09:52 其他开发

为什么在Racket中以一种奇怪的方式定义foldl?

在Haskell中,像许多其他函数式语言一样,函数 foldl 被定义为使得例如 foldl( - )0 [1 ,2,3,4] = -10 。 这是好的,因为 foldl( - )0 [ 1,2,3,4] 根据定义是((((0-1)-2)-3)-4) 。 但是,在Racket中,(foldl - 0'(1 2 3 4))是2,因为球拍“智能地”计算如下:(4 - (3 - (2 - ( ..
发布时间:2018-04-18 15:09:47 其他开发

Java 8函数式编程中“减少”函数的第三个参数的目的

在什么情况下,在Java 8流中调用'reduce'的第三个参数? 下面的代码尝试遍历字符串列表并合并代码每个点的第一个字符的点值。最终lambda返回的值似乎永远不会被使用,如果插入println,它似乎永远不会被调用。文档将其描述为“组合器”,但我无法找到更多详细信息... int result = data (0,(total,s)→> total + s.codePoin ..
发布时间:2018-04-18 15:09:44 Java开发

处理函数式编程中增量数据建模的变化

我作为一名开发人员必须解决的大部分问题都与数据建模有关。 例如,在OOP Web应用程序世界中,我经常需要更改对象中的数据属性以满足新的要求。 如果我很幸运我甚至不需要以编程方式添加新的“行为”代码(函数,方法)。相反,我可以通过注释属性(Java)来声明式添加验证甚至UI选项。 在函数式编程中,添加新数据属性似乎需要很多代码更改,因为模式匹配和数据构造器(Haskell,ML)。 ..
发布时间:2018-04-18 15:09:41 其他开发

为什么没有Go的泛型?

免责声明:我现在只玩了一天Go,所以很有可能我错失了很多。 有人知道为什么会有没有真正的支持泛型/模板/ WhatsInAName在Go?所以有一个通用的 map ,但这是由编译器提供的,而Go程序员不能编写自己的实现。所有关于使Go尽可能正交的讨论,为什么我可以使用泛型类型但不创建新类型? 特别是当涉及函数式编程时,那里是lambdas,甚至是闭包,但是对于缺乏泛型的静态类型系统,我 ..
发布时间:2018-04-18 15:09:36 其他开发

“打结”的解释

在阅读与Haskell相关的东西时,我有时会遇到“绑结”这个表达式,我想我明白它的作用,但不知道它是如何的。。 > 那么,有没有什么好的,基本的和简单的理解这个概念的解释? 解决方案 div> 绑结是解决循环数据结构问题的方法。在命令式语言中,您首先创建一个非圆形结构,然后返回并修正指针以添加圆形。然后构造一个圆形结构。 假设您想要包含元素“0”和“1”的两元素圆形列表。这看起 ..
发布时间:2018-04-18 15:09:30 其他开发

是否存在无法使用尾递归编写的问题?

尾递归是功能语言中一个重要的性能优化策略,因为它允许递归调用消耗常量栈(而不是O(n))。 有没有问题不能用尾递归的方式编写,或者总是可以将一个天真递归函数转换为尾递归函数? 如果是这样,有一天,功能编译器和解释器可以足够聪明地自动执行转换吗? 解决方案 是的,实际上你可以取一些代码并将每个函数调用—以及每个返回—转换为尾部调用。例如,下面是一个包含两个递归调用的函数: $ ..
发布时间:2018-04-18 15:09:28 其他开发

为什么要避免子类型?

我曾经在斯卡拉社区看到很多人建议避免“类似瘟疫”的分类。什么是反对使用子类型的各种原因?什么是替代品? 解决方案 类型决定组合的粒度,即可扩展性。 b $ b 例如,一个接口,例如可比较的是,它将平等和关系运营商相结合(从而混合)。因此,不可能仅仅构造一个相等或相关接口。 通常,知识形成将不存在。 函数组合是子类型的完全替代,因为函数的输入可以代替它的输出,也就是说,任何输出 ..

Javascript是一种功能语言

我已经在web应用程序中使用Javascript进行客户端脚本多年,除了使用原型之外是所有简单的DOM操作,输入验证等。 最近,我有经常阅读,Javascript是支持函数式编程的语言之一。 凭借我对Javascript的熟悉和经验,我的首选是使用它学习函数式编程。我希望我能够更专注于主要的功能概念,而不会被一种全新的语法陷入困境或分心。因此,总而言之,Javascript是一件好事学 ..

Java SE 8有Pairs或Tuples吗?

我在Java SE 8中玩懒惰的函数操作,我想要 map 索引 i 到基于第二个的一对/元组(i,value [i]),然后过滤器 c> value [i] 元素,最后输出索引。 我必须忍受这个:在lambdas和流大胆新时代? 更新:我提出了一个相当简化的示例, @dkatzel在下面的答案之一提供了一个整洁的解决方案。但是,它不是一般化的。因此,让我添加一个更通用的示例: ..
发布时间:2018-04-18 15:09:14 Java开发

Java中的函数式编程

是否有一个用于Java函数式编程的良好库? 我正在寻找诸如谓词和 List.Find()(作为一个静态方法)。 解决方案 FunctionalJava 是最知名的图书馆;它使用Java关闭( BGGA )举例: final Array a =数组(1,2,3); final Array b = a.map({int i => i + ..
发布时间:2018-04-18 15:09:11 Java开发

F#开发和单元测试?

我刚刚开始使用F#,这是我的第一个函数式语言。我一直准C#专用,并且非常享受F#如何让我重新思考如何编写代码。我发现有一点让人迷惑,就是编写代码的过程发生了变化。我一直在C#中使用TDD多年,并且非常感谢有单元测试来知道我在哪里。 到目前为止,我使用F#的过程一直是编写一些功能,用交互式控制台与他们一起玩,直到我“合理”地确定他们工作,并调整&结合。这对欧拉项目这样的小规模问题非常有效,但我 ..
发布时间:2018-04-18 15:09:08 其他开发

你怎么知道什么时候使用折叠和何时使用折叠权?

我知道折叠左边会产生左倾的树木,而右边的右边会产生右倾的树木,但是当我达到折叠的时候,我有时会发现自己陷入了头痛的困境中,试图确定一种折叠是适当的。我通常最终解开整个问题,并逐步执行fold函数,因为它适用于我的问题。 所以我想知道的是: 拇指确定是折叠还是折叠? 如何在给定问题的情况下快速决定使用哪种类型的折叠? Scala by Example (PDF)使用折叠编写一个称 ..
发布时间:2018-04-18 15:09:05 其他开发

在Scala中使用部分函数 - 它是如何工作的?

我是Scala的新手,我正在使用2.9.1,并且正在努力探索如何使用部分函数。我对咖喱函数有一个基本的了解,并且我知道局部函数就像咖喱函数,它们只是二元函数或其他函数。正如你所看到的,我对此有点绿。 似乎在某些情况下,比如XML过滤,能够部分功能会非常有利,所以我希望能够更好地理解如何使用它们。 我有一个使用RewriteRule结构的函数,但我需要它使用两个参数,而RewriteRu ..
发布时间:2018-04-18 15:08:56 其他开发

lapply和do.call有什么区别?

我最近在学习R,并被两个函数混淆: lapply 和 do.call 。看起来它们与Lisp中的 map 函数类似。但为什么有两个名称不同的函数呢?为什么R不使用一个名为 map ? 解决方案 有一个名为 Map 的函数,可能类似于其他语言的地图: lapply 返回与X相同长度的列表,其中每个元素都是将FUN应用于X的对应元素的结果。 do.call 构造并执行函数调用,从一 ..
发布时间:2018-04-18 15:08:54 其他开发

SET与SELECT - 有什么区别?

有人可以在T-SQL中标识 SET 和 SELECT 之间的功能/性能差异(如果有的话) ?在什么情况下我应该选择哪一种? 更新: 感谢所有回复。正如少数人指出的那样,这篇文章由 Narayana Vyas Kondreddi 有很多很好的信息。阅读完文章后,我也仔细阅读了网页,发现这个缩略版本由 Ryan Farley 提供了亮点,并认为我会分享它们: SET是 变量赋值的A ..
发布时间:2018-04-18 15:08:44 其他开发

获取函数的参数

在Javascript中,如何确定为函数定义的形式参数的数量?注意,这不是参数 code>参数,但函数被定义的命名参数的数量。 函数零(){ //应该返回0 } 函数one(x){ //应该返回1 } 函数two(x,y){ //应该返回2 } 解决方案 > zero.length 0 > one.length 1 > two.length ..
发布时间:2018-04-18 15:08:41 前端开发