javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

功能 - Scala中的“提升”是什么?

有时,当我阅读Scala生态系统中的文章时,我会读到“提升”/“解除”一词。 不幸的是,没有解释这究竟意味着什么。 我做了一些研究,似乎提升与功能价值或类似的东西有关,但我无法找到一个文本,以初学者友好的方式解释实际提升的内容。

通过Lift框架存在额外的混乱,其名称已经提升,但它无助于回答这个问题。

什么是Scala中的“提升”?

trans by 2019-03-06T02:18:55Z

函数式编程 - 如果没有可变状态,你怎么能做有用的事情?

我最近一直在阅读很多关于函数式编程的东西,我可以理解它的大部分内容,但是我无法解决的一件事就是无状态编码。 在我看来,通过删除可变状态简化编程就像通过删除仪表板来“简化”汽车:成品可能更简单,但运气好,使其与最终用户交互。

几乎我能想到的每个用户应用程序都将状态作为核心概念。 如果您编写文档(或SO帖子),状态将随每个新输入而变化。 或者,如果你玩视频游戏,有很多状态变量,从所有角色的位置开始,他们往往不断移动。 如果不跟踪变化的价值,你怎么能做有用的事情呢?

每当我找到讨论这个问题的东西时,它都是用真正技术性的函数来编写的,它假设我没有大量的FP背景。 有没有人知道一种方法可以向那些对命令式编码有良好,扎实理解的人解释这一点,但是谁在功能方面是完整的n00b?

编辑:到目前为止,一堆回复似乎试图让我相信不可变值的优点。 我得到那个部分。 这很有道理。 我不明白的是,如何在没有可变变量的情况下跟踪必须改变和不断变化的值。

trans by 2019-02-27T20:37:45Z

函数式编程 - 什么是参考透明度?

参考透明度这个术语是什么意思? 我听说它被描述为“它意味着你可以用平等替换等于”,但这似乎是一个不充分的解释。

trans by 2019-02-19T00:34:04Z

javascript - 如何使用underscore.js作为模板引擎?

我正在尝试了解javascript作为服务器端语言和函数式语言的新用法。 几天前我听说过node.js和表达框架。 然后我看到underscore.js作为一组实用函数。 我在stackoverflow上看到了这个问题。 它说我们可以使用underscore.js作为模板引擎。 任何人都知道有关如何使用underscore.js进行模板化的好教程,特别是对于那些对高级javascript经验较少的biginners。 谢谢

trans by 2019-02-14T06:54:37Z

为什么Python不适合函数式编程?

我一直认为函数式编程可以用Python完成。 因此,我很惊讶Python在这个问题上没有得到很多提及,当提到它时,它通常不是很积极。 然而,没有给出很多理由(没有提到模式匹配和代数数据类型)。 所以我的问题是:为什么Python不适合函数式编程? 是否有更多的原因,而不是缺乏模式匹配和代数数据类型? 或者这些概念对函数式编程如此重要,以至于不支持它们的语言只能被归类为二级函数式编程语言? (请记住,我在函数式编程方面的经验非常有限。)

trans by 2019-02-08T02:33:07Z

为何选择功能语言

我在这里看到很多关于函数式语言和东西的讨论。 你为什么要使用“传统”语言? 他们做得更好? 他们更糟糕的是什么? 什么是理想的函数式编程应用程序?

trans by 2019-02-07T20:27:16Z

haskell - 滥用代数数据类型的代数 - 为什么这有效?

代数数据类型的“代数”表达式对于具有数学背景的人来说非常具有启发性。 让我试着解释一下我的意思。

定义了基本类型

  • 产品1 / (1 - X)
  • Union 1 / (1 - X)
  • Singleton 1 / (1 - X)
  • 单位1 / (1 - X)

并且使用L的220809397858153369和X+X等220809397858153369的简写,然后我们可以定义代数表达式,例如2208093978581533669。 链表

1 / (1 - X)L

和二叉树:

1 / (1 - X)L

现在,我作为数学家的第一直觉是坚持这些表达方式,并尝试解决1 / (1 - X)L.我可以通过重复替换来做到这一点,但似乎更容易滥用符号,并假装我可以重新排列它 将。 例如,对于链接列表:

1 / (1 - X)

1 / (1 - X)

1 / (1 - X)

我使用1 / (1 - X)的幂级数展开以完全不合理的方式得出一个有趣的结果,即L类型是T = 1 + X + 2 • X² + 5 • X³ + 14 • X⁴ + ...,或者它包含1个元素,或者它包含2个元素,或3等。

如果我们为二叉树做它会变得更有趣:

T = 1 + X + 2 • X² + 5 • X³ + 14 • X⁴ + ...

T = 1 + X + 2 • X² + 5 • X³ + 14 • X⁴ + ...

T = 1 + X + 2 • X² + 5 • X³ + 14 • X⁴ + ...

T = 1 + X + 2 • X² + 5 • X³ + 14 • X⁴ + ...

再次,使用幂级数扩展(使用Wolfram Alpha完成)。 这表达了非显而易见的(对我来说)事实,即只有一个二元树有1个元素,2个二叉树有两个元素(第二个元素可以在左边或右边的分支上),5个二叉树有三个元素等。

所以我的问题是 - 我在这做什么? 这些操作似乎没有道理(无论如何,代数数据类型的平方根究竟是什么?)但它们会产生明显的结果。 两种代数数据类型的商是否在计算机科学中有任何意义,还是仅仅是符号的诡计?

而且,或许更有趣的是,是否可以扩展这些想法? 是否存在类型代数的理论,例如,允许类型上的任意函数,或类型是否需要幂级数表示? 如果你可以定义一类函数,那么函数的组合是否有任何意义?

trans by 2019-02-07T14:42:08Z

scala - “编程代码”在编程环境中意味着什么?

我在函数式编程和PLT圈子中多次听到过“enggebras”这个术语,特别是在讨论对象,comonads,镜头等时。 谷歌搜索这个术语给出了对这些结构进行数学描述的页面,这对我来说几乎是不可理解的。 任何人都可以解释一下代数在编程环境中的意义,它们的意义是什么,以及它们与对象和共同体的关系?

trans by 2019-02-06T22:03:21Z

函数式编程 - Scala的收益是多少?

我理解Ruby和Python的收益率。 Scala的收益率是多少?

trans by 2019-02-01T11:02:41Z

函数式编程 - 什么是'闭包'?

我问了一个关于Currying和关闭的问题。什么是关闭? 它与currying有什么关系?

trans by 2019-01-30T16:20:59Z

函数式编程 - 什么是Y-combinator?

Y-combinator是一种来自事物“功能”方面的计算机科学概念。 大多数程序员对组合器一无所知,如果他们甚至听说过它们的话。

  • 什么是Y-combinator?
  • 组合器如何工作?
  • 它们有什么用?
  • 它们在程序语言中有用吗?
trans by 2019-01-28T21:43:01Z

函数式编程 - 什么是'Currying'?

我在几篇文章和博客中看到了对curried函数的引用,但我找不到一个好的解释(或者至少有一个有意义的解释!)

trans by 2019-01-23T16:52:57Z

函数式编程 - Haskell中的大规模设计?

设计/构建大型功能程序的好方法是什么,特别是在Haskell中?

我已经阅读了很多教程(自己写一个方案是我最喜欢的,真实世界Haskell紧随其后) - 但大多数程序都相对较小,而且是单一目的。 另外,我不认为它们中的一些特别优雅(例如,WYAS中的大量查找表)。

我现在想要编写更大的程序,包含更多移动部件 - 从各种不同来源获取数据,清理数据,以各种方式处理数据,在用户界面中显示,持久化,通过网络进行通信等。 一个最好的结构,这样的代码是易读,可维护,适应不断变化的要求?

有大量文献针对大型面向对象的命令式程序解决这些问题。 像MVC,设计模式等的想法是实现广泛目标的理想规定,例如在OO风格中分离关注点和可重用性。 此外,较新的命令式语言适合于“随着您的成长而设计”的重构风格,在我的新手看来,Haskell似乎不太适合。

Haskell有相同的文献吗? 如何在功能性编程(单子,箭头,应用等)中使用异域控制结构的动物园最好地用于此目的? 你能推荐什么最佳实践?

谢谢!

编辑(这是Don Stewart回答的后续行动):

@dons提到:“Monads在类型中捕获关键的建筑设计。”

我想我的问题是:如何在纯函数式语言中考虑关键的架构设计?

考虑几个数据流的示例和几个处理步骤。 我可以将数据流的模块化解析器编写为一组数据结构,我可以将每个处理步骤实现为纯函数。 一个数据所需的处理步骤将取决于其值和其他数据。 一些步骤之后应该是GUI更新或数据库查询等副作用。

什么是以正确方式绑定数据和解析步骤的“正确”方法? 人们可以编写一个大功能,为各种数据类型做正确的事情。 或者可以使用monad来跟踪到目前为止已处理的内容,并让每个处理步骤从monad状态获得接下来需要的任何内容。 或者可以写很多单独的程序并发送消息(我不太喜欢这个选项)。

他链接的幻灯片有一个我们需要的东西子弹:“将设计映射到的成语类型/函数/类/ monads“。什么是成语?:)

trans by 2019-01-21T12:43:09Z

函数式编程 - Monad用简单的英语? (对于没有FP背景的OOP程序员)

就OOP程序员所理解的而言(没有任何函数编程背景),monad是什么?

它解决了什么问题,它使用的最常见的地方是什么?

编辑:

为了澄清我一直在寻找的理解,让我们假设您正在将具有monad的FP应用程序转换为OOP应用程序。 你会怎么做把monad的职责移植到OOP应用程序?

trans by 2019-01-19T18:55:33Z

scala - 函数式编程中如何存在时间函数?

我承认我对功能编程知之甚少。 我从这里和那里读到它,因此我们知道在函数式编程中,无论函数被调用多少次,函数都会为相同的输入返回相同的输出。 它就像一个数学函数,对于函数表达式中涉及的输入参数的相同值,计算相同的输出。

例如,考虑一下:

f(x,y) = x*x + y; // It is a mathematical function

无论您使用多少次f(10,4),其值始终为104。因此,无论您在何处编写f(10,4),都可以将其替换为104,而无需更改整个表达式的值。 此属性称为表达式的引用透明度。

正如维基百科所说(链接),

相反,在函数代码中,函数的输出值仅取决于输入到函数的参数,因此使用参数x的相同值调用函数f两次将产生相同的结果f(x)。

函数式编程中是否存在时间函数(返回当前时间)?

  • 如果是,那么它如何存在? 它是否违反了函数式编程的原理? 它特别违反了引用透明性,这是函数式编程的一个属性(如果我正确理解它)。

  • 或者如果不是,那么如何才能知道函数式编程中的当前时间?

trans by 2019-01-19T08:51:57Z

oop - 功能编程与面向对象编程

到目前为止,我已经主要接触过OO编程,并期待学习一门函数式语言。 我的问题是:

  • 什么时候选择面向对象的函数式编程?
  • 函数式编程是更好的选择的典型问题定义是什么?
trans by 2019-01-16T07:28:37Z

javascript - 对象的映射函数(而不是数组)

我有一个对象:

myObject = { 'a': 1, 'b': 2, 'c': 3 }

我正在寻找一种原生方法,类似于map,将使用如下:

newObject = myObject.map(function (value, label) {
    return value * value;
});

// newObject is now { 'a': 1, 'b': 4, 'c': 9 }

JavaScript是否具有对象的map功能? (我想将它用于Node.JS,所以我不关心跨浏览器问题。)

trans by 2019-01-16T06:24:32Z

python - list comprehension vs. lambda + fi

我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它。

我的代码看起来像这样:

my_list = [x for x in my_list if x.attribute == value]

但后来我想,这样写它会不会更好?

my_list = filter(lambda x: x.attribute == value, my_list)

它更具可读性,如果需要性能,可以取出lambda来获得一些东西。

问题是:使用第二种方式有什么警告吗? 任何性能差异? 我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?

trans by 2019-01-16T02:48:11Z

哈斯克尔 - “你不明白欣德利 - 米尔纳的哪一部分?”

我发誓曾经有一件T恤出售,其中包含不朽的话语:


什么部分

Hindley-Milner

难道你不明白?


就我而言,答案就是......全部!

特别是,我经常在Haskell论文中看到这样的符号,但我不知道它的含义是什么。 我不知道它应该是什么样的数学分支。

我当然认识到希腊字母的字母,以及诸如“∉”之类的符号(通常意味着某些东西不是一组的元素)。

另一方面,我以前从未见过“⊢”(维基百科称它可能意味着“分区”)。 我也不熟悉这里使用的vinculum。 (通常它表示一个分数,但这似乎不是这里的情况。)

如果有人至少可以告诉我从哪里开始想要理解这个符号海洋的含义,那将会有所帮助。

trans by 2019-01-15T08:07:49Z

oop - 函数式编程是否取代了GoF设计模式?

自从我去年开始学习F#和OCaml以来,我已经阅读了大量文章,这些文章坚持认为设计模式(特别是Java)是命令式语言中缺少的功能的变通方法。 我发现的一篇文章提出了相当强烈的主张:

我见过的大多数人都读过   设计模式由Gang of  四。 任何自尊的程序员   会告诉你这本书是   语言不可知和模式   适用于软件工程   一般,不管是哪种语言   你用。 这是一个崇高的主张。   不幸的是它远离了   真相。

功能语言极其重要  表现力。 用函数式语言   一个人不需要设计模式   因为语言可能很高   等级,你最终编程   消除设计的概念   各种模式。

函数式编程的主要特性包括作为一等值,currying,不可变值等的函数。对我来说,OO设计模式近似于任何这些特性似乎并不明显。

另外,在支持OOP的函数式语言(例如F#和OCaml)中,对我来说很明显,使用这些语言的程序员将使用与其他所有OOP语言相同的设计模式。 事实上,现在我每天都使用F#和OCaml,并且我在这些语言中使用的模式与我在Java中编写时使用的模式之间没有明显的差异。

功能编程是否消除了对OOP设计模式的需求,是否有任何理由? 如果是这样,您可以发布或链接到典型OOP设计模式及其功能等效的示例吗?

trans by 2019-01-13T18:58:53Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 下一页 共12页