Lisp宏和scala宏有什么区别?

问题描述 投票:1回答:1

Lisp宏和scala宏之间有什么根本区别吗?

据我所知,宏是编程程序的手段。他们扩展了语言。但它们同样强大吗?与Lisp宏相比,scala宏有一些限制吗?说lisp宏更强大是否恰当?与Lisp宏相比,scala宏有一些适用性限制吗?

如果Lisp和scala宏之间没有概念上的区别,那么可以只研究Lisp宏的机制,然后只应用于scala。但是如果scala宏没有Lisp宏那么强大,那么这是不可能的。有很多关于Lisp的好文献,但关于scala的文献却不多。

scala macros lisp scala-macros
1个回答
2
投票

Lisp是动态类型语言。 Scala是静态类型语言,其类型系统非常强大。

Scala中的宏可以根据其类型(或其子树的类型)转换AST,甚至可以更改其类型。所以Scala中的宏不仅是语法而且是语义。

另请参阅论文https://infoscience.epfl.ch/record/226166/files/EPFL_TH7159.pdf#chapter.10,p中有关Scala中的宏与Lisp中的宏的注释。 206。

© www.soinside.com 2019 - 2024. All rights reserved.