Lisp宏和scala宏有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lisp宏和scala宏有什么区别?相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

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

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

以上是关于Lisp宏和scala宏有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

#if 和 #ifdef Objective-C 预处理器宏有啥区别?

common-lisp:绑定和符号之间的区别

Emacs Lisp 和 Common Lisp 之间的主要区别是啥? [关闭]

Common Lisp 中的原子和符号有啥区别?

宏和函数的区别

宏和函数的区别