-
22 votesanswersviews
如果功能语言真的很简洁,为什么他们在语言枪战游戏中没有更好的排名呢?
我比较语言枪战游戏by their code size only的语言 . 以下是我得到的摘要(最短的,按类似得分分组) . Python,Ruby,JavaScript,Perl,Lua,PHP,Mozart / OZ OCaml,Erlang,Racket,Go,Scala,F#,Smalltalk Pascal,Clean,Haskell,Common Lisp,C#,Java,... -
6 votesanswersviews
如何在Scala中实现Future作为应用?
假设我需要运行两个并发计算,等待它们,然后组合它们的结果 . 更具体地说,我需要同时运行 f1: X1 => Y1 和 f2: X2 => Y2 ,然后调用 f: (Y1, Y2) => Y 以最终获得 Y 的值 . 我可以创建未来的计算 fut1: X1 => Future[Y1] 和 fut2: X2 => Future[Y2] ,然后使用monadic组合将它们... -
1 votesanswersviews
如何管理一套Akka期货
我有一套未来[T],我想管理到我正在编写的库的单个对象 . 在我目前的实现中,我使用Future.sequence来收集它们并等到它们已经解决,所以我可以在它们上做未来的事情(map,collect,filter) . 然而,这只能让我有能力匹配成功或失败,这不一定是我正在处理的期货收集的情况 . 有些会失败,有些会失败,我希望能够从成功的那些中提取我可以获得的值,并收集其他的异常和错误,以便我可... -
16 votesanswersviews
虽然在F#中使用Tail Recursion,但在什么时候使用?
好的,只是在F#中,这就是我现在理解的方式: 有些问题本质上是递归的(构建或读出树结构只能命名一个)然后你使用递归 . 在这些情况下,您最好使用尾递归来使堆栈中断 有些语言是纯函数式的,所以你必须使用递归而不是while循环,即使问题本质上不是递归的 所以我的问题是:既然F#也支持命令式范式,你会在F#中使用尾递归来解决那些不是自然递归的问题吗?特别是因为我已经读过编译器重新认识尾递归... -
20 votesanswersviews
MATLAB中的部分功能评估
在MATLAB函数中绑定变量是否有惯用的方法?看起来创建一个函数,绑定一些参数,然后将新函数传递给某种类型的优化器(在我的例子中,是牛顿求解器)是相当普遍的 . 看起来变量作用域规则不允许使用嵌套或内联函数的解决方案 . 我应该简单地创建一个类吗?看起来MATLAB似乎没有一流的功能对象,这是正确的吗?我的搜索功夫正在缩短 . 谢谢! 例如,假设我想为参数c的各种值找到f(c,x)= x ^ 3 ... -
0 votesanswersviews
在Scala中编写阶乘尾递归函数
我试图以下面的方式编写尾递归函数,但编译器抛出错误: 方法适用的参数太多:(v1:Int)特征中的Int函数1否则因子(x-1,x * acc) 我曾尝试用Function2替换Function1并赋予Function2 [Int,Int,Int] = new Function2 [Int,Int,Int] 但它仍然给我带来了同样的错误 . 有人可以指出我哪里出错了吗? import scala.... -
209 votesanswersviews
在函数式编程中,什么是函子?
我在阅读各种关于函数式编程的文章时,曾几次尝试Functor,但作者通常认为读者已经理解了这个术语 . 在网上浏览提供了过多的技术说明(请参阅Wikipedia article)或令人难以置信的模糊描述(请参阅此处ocaml-tutorial website上的Functors部分) . 有人可以友好地定义术语,解释它的用法,并提供一个如何创建和使用Functors的例子吗? Edit :虽然我对... -
42 votesanswersviews
仿函数和endofunctors之间的差异
有人可以简单地解释两者之间的区别吗?我并没有完全理解monad是endofunctor而不仅仅是functor的部分 . -
34 votesanswersviews
有没有好的Clojure基准测试?
编辑: The Clojure benchmarks are up on the Benchmarks Game . 我已经在社区维基上提出了这个问题并邀请其他人更新 . 有人知道Clojure表现的基准吗? 我已经做了一些我自己的(虽然没有什么太正式),与其他功能语言(尝试Haskell和OCaml)相比,它不太公平 . 但是,与Java或JVM上的其他语言(例如Scala)相比,它看起来如... -
0 votesanswersviews
联盟类型scala的集合
在scala中是否可以拥有联合类型的集合 . 有几种方法可以讨论联合类型here评价最高的答案感觉最本土,我有这样的事情: sealed trait StringOrNumber[T] object StringOrNumber { implicit object IntWitness extends StringOrNumber[Int] implicit object Stri... -
32 votesanswersviews
如何减少Haskell应用程序中的内存使用量?
我是函数式编程的新手,现在学习Haskell . 作为练习,我决定实现一维线性扩散方程的显式欧拉方法 . 虽然下面的代码工作正常,但我对它的性能并不满意 . 事实上,我关心的是内存消耗 . 我相信它与懒惰评估有关,但无法弄清楚如何减少其内存使用量 . 算法的想法非常简单,用命令性的术语表达:它采用“数组”,并且每个内部点都添加一个值,该值是作为点本身和其中的值的组合计算的 . 邻居 . 边界点是特... -
4 votesanswersviews
在列表中的每n个元素之后插入特定元素y
我在书中遇到了问题,要求我定义一个函数插入,它带有一个正整数 n ,元素 y ,以及一个列表 xs ,它在列表中的每个 n 元素之后插入指定的元素 y . 我相信模式匹配可能是一个很好的方法,但我还没有真正掌握它的含义 insert :: Int -> Char -> [a] -> [a] insert 0 y xs = xs insert n y [] = [] insert... -
3 votesanswersviews
我的第一个Haskell程序,我不错't understand what'
我试图递归地实现 elem 函数 . 这就是我写的: member :: Eq a => a -> [a] -> Bool member _ [] = False member n (x:xs) | n == x = True : member (n xs) | otherwise = False main = do... -
10 votesanswersviews
关于Haskell性能的推理
以下两个用于计算Fibonacci序列第n项的Haskell程序具有非常不同的性能特征: fib1 n = case n of 0 -> 1 1 -> 1 x -> (fib1 (x-1)) + (fib1 (x-2)) fib2 n = fibArr !! n where fibArr = 1:1:[a + b | (a, b) <- z... -
4 votesanswersviews
Lodash过滤器和功能组合
我有一个带有 media 键的对象数组,其值可能为空,也可能不为空 . 我有一个函数来选择该键值和一个检查该值为空的函数,以便 mediaEmptyComparer({media: ''}) 返回true并且 mediaEmptyComparer({media: 'somevalue'}) 为false . var array = _.times(100, function () { return... -
4 votesanswersviews
有人使用SML或OCaml来构建真实的GUI吗?
看了一些相关的OCaml图形projects后,似乎没有人用它来构建GUI . 为什么? 那些过时的图书馆有没有现代的替代品? -
1 votesanswersviews
在SML中int - > int - > int和(int * int) - > int有什么区别?
我注意到有两种方法可以在SML中定义函数 . 例如,如果你使用add函数,这有以下两种方式: fun add x y = x+y; fun add(x,y) = x+y; 第一种方法创建函数类型: val add = fn : int -> int -> int 第二个创建函数类型: val add = fn : int * int -> int 这两种类型对于同一功能有... -
4 votesanswersviews
部分评估和讨论
我已经开始了解一些与currying相关的例子,但我仍然不满意我想要的currying概念 . 我知道currying可以用来做部分评估,但我不确定它在某些情况下会如何起作用 . 我知道它在以下示例中是如何工作的: fun funkyPlus x y = x*x+y; 所以,假设我们只传递x的参数,那么它等效于以下内容: fun funkyPlus 3 = (fn x => fn y =&... -
1 votesanswersviews
累积咖喱功能(SML)
我有一系列问题,我一直在努力,似乎无法理解最后一个问题 . 这是第一个问题,我的解决方案是: a)我们常常对计算Σi= m..n f(i)感兴趣,i = m到n的函数值f(i)之和 . 定义sigma f m n,它计算Σi= m..n f(i) . 这与定义sigma(f,m,n)不同 . fun sigma f m n = if (m=n) then f(m) else (f(m) + s... -
21 votesanswersviews
功能广度优先搜索
功能深度优先搜索在有向无环图中很可爱 . 然而,在带循环的图中,我们如何避免无限递归?在程序语言中,我会在我点击它时标记节点,但是让我说我不能这样做 . 访问节点列表是可能的,但速度很慢,因为使用一个会导致在重复之前对该列表进行线性搜索 . 比这里的列表更好的数据结构显然会有所帮助,但这不是游戏的目的,因为我在ML中编码 - 列表是王道,还有其他任何我必须自己写的东西 . 这个问题有巧妙的方法吗?... -
8 votesanswersviews
Scala - 如何在非函数类型上使用Functors?
在阅读此博客上的Functors说明时: https://hseeberger.wordpress.com/2010/11/25/introduction-to-category-theory-in-scala/ Functor的一般定义和更具体的定义: trait GenericFunctor[->>[_, _], ->>>[_, _], F[_]] { def... -
110 votesanswersviews
数据库和功能编程是否存在争议?
我已经做了一段时间的Web开发人员,并且最近开始学习一些函数式编程 . 像其他人一样,我在将这些概念应用于我的专业工作时遇到了一些重大问题 . 对我来说,主要原因是我发现FP之间保持无状态的目标之间的冲突似乎与我所做的大多数Web开发工作都与数据库密切相关的事实相矛盾,数据库是以数据为中心的 . 让我成为OOP方面效率更高的开发人员的一件事是发现对象关系映射器,如.Net的MyGeneration... -
0 votesanswersviews
消除副作用如何促进并行和并发编程?
是否有任何成功和实用的函数式语言(如Erlang)或库基于这样的假设,即用这种语言编写的程序没有副作用或只有受控制的副作用(例如,由Monad表示,因此可以检测到并由编译器分隔) -
16 votesanswersviews
功能编程 Domain-Driven 设计
函数式编程提升了不可变类和引用透明性。 Domain-driven design 由 Value Object(不可变)和 Entities(可变)组成。 我们应该创建不可变实体而不是可变实体吗? 让我们假设,项目使用 Scala 作为主要语言,如果我们处理并发问题,我们如何将实体编写为案例类(不可变的那样)而不会有陈旧状态的风险? 什么是好习惯?保持实体可变(var字段 etc...)并避免案例... -
23 votesanswersviews
闭包是否违反了函数式编程范式?
功能编程“避免状态和可变数据”。 闭包通过绑定它们的词汇环境来隐藏状态,因此关闭它们的自由变量。 如果它支持闭包,Haskell 如何 purely-functional?他们不打破参考透明度吗? -
218 votesanswersviews
程序编程和函数编程有什么区别? [1]
我已经阅读了程序编程和函数式编程的维基百科文章,但我仍然有些困惑。有人可以把它归结为核心吗? -
129 votesanswersviews
功能和命令式编程语言有什么区别?
大多数主流语言,包括 object-oriented 编程(OOP)语言,如 C#,Visual Basic,C 和 Java,主要用于支持命令式(程序性)编程,而 Haskell/gofer 类语言纯粹是功能性的。任何人都可以详细说明这两种编程方式之间的区别吗? 我知道这取决于用户要求选择编程方式,但为什么建议学习函数式编程语言? -
-2 votesanswersviews
程序语言和函数语言之间的区别?
我最近在一次采访中被问到这个问题。我无法得到正确的答案。 当您重复调用过程 language(like C)中的函数和函数 language(like haskell)时,使用相同的参数,您可能会得到不同的语言?我在1帖子中读到,纯函数式语言总会产生相同的答案。为什么这样的函数式语言而不是过程语言呢? -
51 votesanswersviews
纯度与参考透明度
这些术语似乎有不同的定义,但我总是想到一个暗示另一个;当表达式是引用透明而不是纯粹或 vice-versa 时,我无法想到任何情况。 维基百科为这些概念维护单独的文章并说: 来自参考透明度: 如果表达式中涉及的所有函数都是纯函数,则表达式是引用透明的。此外,如果丢弃它们的值并且它们的副作用无关紧要,则表达式中可以包含一些不纯的函数。 来自纯粹的表达: 构造纯表达式需要纯函数。 [5]纯表达通... -
39 votesanswersviews
为什么提出异常会产生副作用?
根据维基百科的副作用条目,提出异常构成了副作用。考虑一下这个简单的 python 函数: def foo(arg): if not arg: raise ValueError('arg cannot be None') else: return 10 使用foo(None)调用它将始终遇到异常。相同的输入,相同的输出。它是参考透明的。为什么这不是一...