gpt4 book ai didi

macros - Lisp 宏的用途示例

转载 作者:太空宇宙 更新时间:2023-11-03 18:32:08 33 4
gpt4 key购买 nike

听说Lisp的宏系统很强大。然而,我发现很难找到一些实际的例子来说明它们的用途;没有他们将难以实现的事情。

谁能举个例子?

最佳答案

源代码转换。所有种类。示例:

  • 新的控制流语句:您需要 WHILE 语句吗?你的语言没有?为什么要等待仁慈的独裁者明年再增加一个。自己写吧。五分钟后。

  • 更短的代码:您需要二十个看起来几乎相同的类声明 - 只有有限的地方不同。编写一个宏形式,将差异作为参数并为您生成源代码。想稍后更改吗?在一处更改宏。

  • 源代码树中的替换:您想将代码添加到源代码树中吗?一个变量真的应该是一个函数调用吗?在“遍历”源代码并更改它找到变量的位置的代码周围包装一个宏。

  • 后缀语法:您想以后缀形式编写代码吗?使用将代码重写为正常形式(Lisp 中的前缀)的宏。

  • 编译时效果:您需要在编译环境中运行一些代码来通知开发环境有关定义的信息吗?宏可以生成在编译时运行的代码。

  • 编译时代码简化/优化:您想在编译时简化一些代码?使用进行简化的宏 - 这样您就可以根据源形式将工作从运行时转移到编译时。

  • 根据描述/配置生成代码:您需要编写复杂的类组合。例如,您的窗口有一个类,子 Pane 有类, Pane 之间有空间限制,您有一个命令循环、一个菜单和一大堆其他东西。编写一个宏来捕获窗口及其组件的描述,并根据描述创建驱动应用程序的类和命令。

  • 语法改进:有些语言的语法看起来不是很方便?编写一个宏,让您(应用程序编写者)更方便。

  • 领域特定语言:您需要一种更接近您的应用领域的语言吗?用一堆宏创建必要的语言形式。

元语言抽象

基本思想:语言层面的所有内容(新形式、新语法、形式转换、简化、IDE 支持……)现在都可以由开发人员逐段编程——无需单独的宏处理阶段。

关于macros - Lisp 宏的用途示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561221/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com