对于那些在Haskell和一些Lisp风格中都有经验的人来说,我很好奇,用Haskell和Lisp编写代码是多么“令人愉快”(使用一个可怕的术语)。
一些背景:我现在正在学习Haskell,之前我使用了Scheme和CL (以及对Clojure的一些尝试)。传统上,你可以认为我是动态语言的拥趸,因为他们提供了简洁和快速的语言。我很快就爱上了Lisp宏,因为它给了我另一种避免冗长和样板的方法。
我发现Haskell 非常有趣,因为它向我介绍了一些我不知道存在的编码方法。它肯定有一些方面似乎有助于实现敏捷性,比如编写部分功能的易用性。然而,我有点担心失去Lisp宏(我想我失去了它们;说实话,我可能还没有了解它们呢?)和静态打字系统。
有谁在这两个世界中都做过相当多的编码,谁会评论这些体验的不同之处,你更喜欢哪一种,如果说偏好是情境的话?
发布于 2008-12-25 15:40:13
简短答覆:
[注意:有一个"模板Haskell“,它允许您像在Lisp中那样编写宏,但严格地说,您不应该需要它。]
发布于 2008-12-25 11:28:04
首先,不要担心失去了一些特殊的特性,比如动态类型。由于您熟悉Common,一种设计得非常好的语言,我想您应该知道一种语言不能简化为它的特性集。这都是一个连贯的整体,不是吗?
在这方面,Haskell与Common一样明亮。它的特性结合在一起,为您提供了一种编程方式,使代码非常简短和优雅。更精细的(但类似地,更难理解和使用)概念,如monads和箭头,在一定程度上缓解了宏的缺乏。静态类型系统增加了您的功能,而不是像在大多数面向对象语言中那样阻碍您的方式。
另一方面,用Haskell编程的交互性要比Lisp差得多,而且像Lisp这样的语言中存在的大量反映并不符合Haskell预设的静态世界观点。因此,您可以使用的工具集在这两种语言之间是非常不同的,但是很难相互比较。
我个人更喜欢一般的Lisp编程方式,因为我觉得它更适合我的工作方式。然而,这并不意味着你也一定要这么做。
发布于 2009-01-07 23:01:18
在Haskell中进行元编程的需求要比在Common中少,因为许多元编程都可以围绕monads进行,而且添加的语法使嵌入的DSL看起来更不像树,但是正如ShreevatsaR所提到的,始终存在模板Haskell,如果您喜欢括号,甚至还有李塞尔 (Haskell语义+ Lisp语法)。
https://stackoverflow.com/questions/392733
复制相似问题