在Scheme或Racket何时使用函数以及何时使用宏

时间:2012-03-17 00:42:19

标签: scheme racket

有人可以提供一些关于何时使用Scheme或Racket宏以及何时使用函数的一般指导。

如果你没有创建新的语法并且你没有在变量上创建副作用,那么你是否需要(或者更合适)使用宏而不是函数?

2 个答案:

答案 0 :(得分:4)

宏允许您使用完全不同的语法。宏调用根本不需要看起来像函数调用,尽管最简单的宏通常会这样做。此外,宏在运行时之前在单独的阶段执行。因此,如果您需要不同的语法,或者如果您想在运行时之前进行宏扩展,那么,请使用宏。

一般来说,如果你能用一个函数干净利落地做,那就用一个函数。

答案 1 :(得分:4)

Matthias Felleisen在他的Racket style guide中简要讨论了这个问题。

相关问题