首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Haskell,Lisp,和详细

Haskell,Lisp,和详细
EN

Stack Overflow用户
提问于 2008-12-25 10:58:42
回答 8查看 29.2K关注 0票数 104

对于那些在Haskell和一些Lisp风格中都有经验的人来说,我很好奇,用Haskell和Lisp编写代码是多么“令人愉快”(使用一个可怕的术语)。

一些背景:我现在正在学习Haskell,之前我使用了Scheme和CL (以及对Clojure的一些尝试)。传统上,你可以认为我是动态语言的拥趸,因为他们提供了简洁和快速的语言。我很快就爱上了Lisp宏,因为它给了我另一种避免冗长和样板的方法。

我发现Haskell 非常有趣,因为它向我介绍了一些我不知道存在的编码方法。它肯定有一些方面似乎有助于实现敏捷性,比如编写部分功能的易用性。然而,我有点担心失去Lisp宏(我想我失去了它们;说实话,我可能还没有了解它们呢?)和静态打字系统。

有谁在这两个世界中都做过相当多的编码,谁会评论这些体验的不同之处,你更喜欢哪一种,如果说偏好是情境的话?

EN

回答 8

Stack Overflow用户

发布于 2008-12-25 15:40:13

简短答覆:

  • 对于宏您可以做的几乎任何事情,您可以用一个高阶函数(我包括monads,箭头等),但它可能需要更多的思考(但只是第一次,它很有趣,您将是一个更好的程序员,和
  • 静态系统是足够普遍的,它从来不会妨碍您,而且它实际上“有助于实现敏捷性”(正如您说过的),因为当您的程序编译时,您几乎可以确定这是正确的,因此这种确定性允许您尝试一些您可能会害怕尝试的东西--编程有一种“动态”的感觉,尽管它与Lisp不同。

[注意:有一个"模板Haskell“,它允许您像在Lisp中那样编写宏,但严格地说,您不应该需要它。]

票数 70
EN

Stack Overflow用户

发布于 2008-12-25 11:28:04

首先,不要担心失去了一些特殊的特性,比如动态类型。由于您熟悉Common,一种设计得非常好的语言,我想您应该知道一种语言不能简化为它的特性集。这都是一个连贯的整体,不是吗?

在这方面,Haskell与Common一样明亮。它的特性结合在一起,为您提供了一种编程方式,使代码非常简短和优雅。更精细的(但类似地,更难理解和使用)概念,如monads和箭头,在一定程度上缓解了宏的缺乏。静态类型系统增加了您的功能,而不是像在大多数面向对象语言中那样阻碍您的方式。

另一方面,用Haskell编程的交互性要比Lisp差得多,而且像Lisp这样的语言中存在的大量反映并不符合Haskell预设的静态世界观点。因此,您可以使用的工具集在这两种语言之间是非常不同的,但是很难相互比较。

我个人更喜欢一般的Lisp编程方式,因为我觉得它更适合我的工作方式。然而,这并不意味着你也一定要这么做。

票数 65
EN

Stack Overflow用户

发布于 2009-01-07 23:01:18

在Haskell中进行元编程的需求要比在Common中少,因为许多元编程都可以围绕monads进行,而且添加的语法使嵌入的DSL看起来更不像树,但是正如ShreevatsaR所提到的,始终存在模板Haskell,如果您喜欢括号,甚至还有李塞尔 (Haskell语义+ Lisp语法)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/392733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档