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 预处理器宏有啥区别?