Lisp在学术界很早就开发了一套有趣的语言功能,但是其中大多数从未在生产环境中流行。

某些语言(例如JavaScript)适应了垃圾回收和词法关闭等基本功能,但实际上可能会改变您大规模编写程序的所有方式(例如强大的宏,代码数据事物和自定义控件结构)似乎是在其他功能语言中传播的,而对于非平凡的项目而言,没有任何一种实用。

函数式编程社区还提出了许多其他有趣的想法(除了函数式编程本身),例如引用透明性,通用的大小写表达式(即模式匹配,不像C / C#开关那样残缺)和咖喱函数,在常规程序设计中似乎显然有用,并且应该易于与现有程序设计实践相集成,但是由于某种原因,它似乎永远留在学术界。

为什么这些功能很难采用? 是否有实际上可以从Lisp中学习的现代实用语言,而不是半信半疑地复制“一流的功能”,还是有固有的冲突使之不可能?

===============>>#1 票数:20

是否有实际上可以从Lisp中学习的现代实用语言,而不是半信半疑地复制“一流的功能”,还是有固有的冲突使之不可能?

为什么Lisp,Haskell,ocaml或F#不是现代的?

您可能只需要自己动手看一下它们,然后意识到它们更健壮(例如使用Java之类的库),便会想到。

从功能语言到其他语言,已经采用了许多功能。 但是反之亦然-例如,(某些)功能语言具有对象。

===============>>#2 票数:8

Scala是一种很酷的功能/ OO语言,具有模式匹配,一流的功能等。 它具有可编译为Java字节码并与Java代码良好互操作的优点。

===============>>#3 票数:8

我建议您尝试Clojure 语法上漂亮的方言,实用的功能(在ML意义上)且快速 您将获得不变性,软件事务存储,多版本并发控制,REPL,SLIME支持和不竭的FFI。 这是业务程序员的Lisp(&Haskell)。 我在每天的真实工作中度过了愉快的时光。

===============>>#4 票数:8

语言“流行”与该语言是否具有强大的,经过充分研究的,精心设计的功能之间没有已知的关联。

关于这个问题已经说了很多。 它在技术以及艺术中无处不在。 我们知道,与艺术家B相比,艺术家A受过更多的训练,并且创作的作品更具广度和深度,但艺术家B在市场上的成功要大得多。 是因为有一个时代精神吗? 是因为艺术家B有更好的营销? 是否因为大多数人不花时间去了解艺术家A? 也许艺术家B暗中可怕,我们应该不信任对艺术家做出判断的专家吗? 以上可能在某种程度上还是以上所有。

这驱使学习艺术的人们和学习编程语言的人们疯狂。

===============>>#5 票数:7

我猜想,在现实世界中使用的Common Lisp并不是那么疯狂。

===============>>#6 票数:6

Python或Ruby。 在问题“我喜欢Lisp但我的公司不允许我使用它。我应该怎么办?”的问题中,请参阅Paul Graham的想法

===============>>#7 票数:5

Scala是采用重要学术特征的语言的绝对之王。 更高种类,自我类型,多态模式匹配等。所有这些都是尖端的(或接近它)学术研究主题,已作为基本功能并入Scala。 可以说,这损害了语言的简单性,但确实导致了一些非常有趣的模式。

C#比Scala更主流,但是C#所采用的“外部”功能较少。 LINQ对于Wadler的广义列表理解是有限的实现,并且每个人都知道lambda。 但是尽管如此,C#(理所当然)在采用学术界的研究功能时仍然有些保守。

===============>>#8 票数:5

最近,Erlang不仅通过被Twitter使用,而且通过XMPP驱动的消息传递和ejabberd等实现方式的兴起而获得了新的曝光。 它具有许多功能编程思想,这些思想来自于功能编程。 最初用于运行电话交换机,并由Ericson设想用于运行第一个GSM网络。 它仍然存在,它具有完整的功能(作为一种语言),并在许多生产环境中使用。

===============>>#9 票数:3

a

它被用作许多游戏(如《魔兽世界》)和应用程序(Snort,NMAP,Wireshark等)的脚本/扩展语言。 实际上,根据Adobe开发人员的说法,Adobe的Lightroom占Lua的40%以上。

Lua背后的家伙曾多次将Scheme和Lisp列为对Lua的主要影响力,而Lua甚至被描述为不带括号的Scheme。

===============>>#10 票数:2

Lisp在学术界很早就开发了一套有趣的语言功能,但是其中大多数从未在生产环境中流行。

因为管理软件开发人员的人不是那种可以比较不同语言功能的有趣的人。 在2000年左右,我想使用LISP在我们的公司网站上实现XML到HTML的转换(这是在Amazon在LISP中实现其后端的时候)。 我没去 当我为之工作的公司制造并出售Common LISP环境时,这有点讽刺。

===============>>#11 票数:2

您是否已签出F#

===============>>#12 票数:2

许多动态编程语言都实现了功能编程的思想。 较新的.Net语言(C#和VB)具有所谓的lambda语言,但它们并非没有副作用。

例如,将功能性编程和面向对象的编程中的概念组合起来并不难,但并不总是很有意义。 面向对象的语言(试图)将状态封装在对象内部,而功能语言则将状态封装在函数内部。 如果用一种语言组合对象和函数,则很难理解所有这些。

有很多语言通过将它们放在一起来组合这些范式(F#),这很有用,但是我认为我们仍然需要几十年的时间来使用像这样的语言,直到我们能够成功创建一个新范式将结合oo和函数式编程的思想。

===============>>#13 票数:2

C#3.0绝对可以。

C#现在有

  1. Lambda表达式
  2. 高阶函数
  3. 映射/缩小+过滤器(可折叠?)到列表以及实现IEnumerable的所有类型。
  4. LINQ
  5. 对象+集合初始化器。

最后两个列表项可能未经过适当的功能编程,无论如何,答案是C#从Lisp等实现了许多有用的概念。

===============>>#14 票数:2

除了所说的以外,LISP的许多优点还基于保证没有副作用并使用内置数据结构。 两者在现实世界中很少见。 ML可能是更好的功能基础。

===============>>#15 票数:1

实现功能编程功能的另一种“现实世界”语言是Javascript。 由于绝对一切都具有价值,因此可以轻松实现高阶函数。 您还具有其他函数式编程租户,例如lambda函数,闭包和curring。

===============>>#16 票数:0

您所引用的功能(“强大的”宏,作为数据编码的事物和自定义控件结构)尚未在其他功能语言中传播。 他们在Lisp教我们一个坏主意之后就死了。

现代功能语言(OCaml,Haskell,Erlang,Scala,F#,C#3.0,JavaScript)没有这些功能。

干杯,乔恩·哈罗普。

  ask by community wiki translate from so

未解决问题?本站智能推荐:

7回复

功能语言与语言实现的观点有何不同

有一个全新的“函数式编程”范式,与程序式编程相比,需要彻底改变思维模式。 它使用更高阶函数,纯度,monad等,我们通常在命令式和面向对象语言中看不到它们。 我的问题是这些语言的实现与命令式或面向对象语言的区别在于,例如,内存管理或内部指针等。 有一些函数语言在JVM之上运行。
3回复

列表差异功能

是否有任何现有的编程语言(尤其是Lisp或ML系列中的编程语言)具有库功能来计算“从第一到第二的开始”列表的差异-我不确定应该确切地称呼它为什么-例如,如果输入是,则将字符串视为字符列表: abcdef def 然后输出将是
1回复

函数式编程语言中的Church-Rosser定理示例

我已经看过教会Rosser定理的多个参考,特别是钻石属性图,同时学习函数式编程,但我没有遇到一个很好的代码示例。 如果像Haskell这样的语言可以被视为一种lambda演算,那么必须能够使用语言本身来演示一些例子。 如果示例轻松地显示步骤或减少如何导致易于并行执行,我会给予奖励积分
1回复

如何定义此功能的类型配置文件?

我必须定义此函数的类型配置文件: 结果应该是以下内容,但我不知道为什么。
1回复

haskell序列的实现

我刚开始Haskell,但我正在努力!!! 所以我需要创建一个具有公式的Haskell列表 F(n)=(F(n-1)+ F(n-2))* F(n-3)/ F(n-4)并且我有F(0)= 1,F(1)= 1 ,F(2)= 1,F(3)= 1 因此,我想到了初始化列表的前4个元素,然
2回复

是否有像语言(标准ml / ocaml / f#/ haskell / etc)这样的ml,其中列表元素是选项类型

在我看来,[](空列表)和“无/无”是如此相似。 我想知道这些语言家族中是否有基本的列表类型,其中每个元素都是一个选项,而尾部保护则为Nothing? 是否这样做(在具有单独类型的语言中不这样做)是否会因为模式匹配列表过于冗长?
10回复

实际使用咖喱功能?

有很多关于如何理解函数的教程,以及stackoverflow中的许多问题。 然而,在阅读了The Little Schemer,几本书,教程,博客文章和stackoverflow主题之后,我仍然不知道这个简单问题的答案:“有什么关系?” 我明白如何理解一个功能,而不是“为什么?” 在它背后
3回复

这些功能函数叫什么?

我正在寻找一种实现此功能的方法: 潜在的解决方案是: 例如, foo和goo通常称为什么,因此我可以寻找现有的解决方案,而不必重新发明轮子了? 注意:我只是想展示一些示例,希望可以更轻松地进行操作,而不是尝试用语言解释。 任意语法可提供更广泛的理解。
12回复

CMS在函数式编程语言中[关闭]

是否有任何CMS'es,用functonal编程语言(lisp,haskell,f#/ nemerle,scala,erlang,clojure,smalltalk)编写?
2回复

Lisp中的替换功能重复了Mathematica功能

在Mathematica克隆或任何版本的Lisp中实现最简单的方法是什么(实际上甚至Haskell都可以用任何一种语言)? 似乎没有任何lisps 具有类似的replace功能 。 返回值为{x[y], f[x[y, y2]]} 它替换了args中f[{x_, "[", y__,