首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Franz LISP到Common LISP的转换2-生成宏的宏

是指在将Franz LISP代码转换为Common LISP代码的过程中,使用生成宏的宏来实现宏的转换。

在Franz LISP中,宏是一种用于代码生成的工具,可以通过宏展开将宏调用转换为实际的代码。而在Common LISP中,宏的定义和使用方式与Franz LISP有所不同,因此需要进行转换。

生成宏的宏是一种特殊的宏,它的作用是根据输入的参数生成宏的定义。通过使用生成宏的宏,我们可以将Franz LISP中的宏定义转换为Common LISP中的宏定义。

生成宏的宏通常包括两个部分:参数处理和宏定义生成。参数处理部分用于解析输入的参数,提取出需要的信息,例如宏的名称、参数列表等。宏定义生成部分根据参数处理的结果,生成对应的宏定义代码。

生成宏的宏在Common LISP中的应用场景包括但不限于以下几个方面:

  1. 代码迁移:当将Franz LISP代码迁移到Common LISP平台时,可以使用生成宏的宏来转换宏定义,以适应Common LISP的语法和规范。
  2. 代码重构:在对现有的Franz LISP代码进行重构时,可以使用生成宏的宏来简化代码结构,提高代码的可读性和可维护性。
  3. 代码生成:在需要动态生成代码的场景中,可以使用生成宏的宏来生成符合需求的代码片段,从而简化开发过程。

腾讯云提供了一系列与云计算相关的产品,其中包括云服务器、云数据库、云存储等。具体推荐的产品和产品介绍链接地址如下:

  1. 云服务器(ECS):提供弹性计算能力,支持多种操作系统和应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  2. 云数据库(CDB):提供高可用、可扩展的数据库服务,支持多种数据库引擎。详情请参考:https://cloud.tencent.com/product/cdb
  3. 云存储(COS):提供安全可靠的对象存储服务,适用于各种数据存储和分发场景。详情请参考:https://cloud.tencent.com/product/cos

以上是关于Franz LISP到Common LISP的转换2-生成宏的宏的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Clojure与LispClojure与Lisp

(艾伦·凯) "任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。"...自1960代末年至1980年初年,各种更新LISP版本涌现,有源自加利福尼亚大学伯克利分校的Franz Lisp、在AutoCAD运行的AutoLISP前身XLISP、犹他大学开展的Standard Lisp...1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准的Common Lisp诞生。至1994年,美国国家标准学会(ANSI)对Common Lisp语言进行了标准化。...思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。 术语"宏"在Lisp语言中,与其他语言中的意思不一样。...Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。

1.9K30

excel宏编程 c语言,宏(巨集)

Lisp类语言如Common Lisp和Scheme有更精巧的宏系统: 宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。...例如,一种 Lisp 方言有 cond 而没有 if ,就可以使用宏由前者定义后者。Lisp 语法的去部主要扩展,比如面向对象的 CLOS 系统,可以由宏来定义。...这一限制可以通过用更强大的编程语言,如VBA来创建一个计算机程序在此弱编程语言里生成一个特别的宏来解决。...需要针对每一个新的数据集合生成新的 .mac 文件。 == 宏应用 == 应用程序也可以使用一种和宏类似机理的系统来允许用户将一系列(一般是最常使用到的操作)自定义为一个步骤。...Emacs 最初被设计为编辑语言 TECO 的宏集,后被移植为 Lisp 的一种方言 Emacs Lisp。Vim也允许用户录制和播放简单的键盘宏。

1.6K20
  • Lisp的本质(The Nature of Lisp)学习思考

    Lisp的内置函数集十分精简, 只包含了十分必要的部分。剩下的函数都是作为标准库来实现的。 Lisp宏 我们已经看到, 元编程在一个类似jsp的模板引擎方面的应用。我们通过简单的字符串处理来生成代码。...而且, Lisp没有语义约束, 你可以构造任何数据结构, 只要你原意。 Lisp通过宏(macro)来做元编程。我们写一组宏来把任务列表(to-do list)转换为专用领域语言。...实际上, 编译器会替我们工作, 调用相应的宏。我们所要做的, 仅仅是创建一个把数据转换为适当代码的宏。...例如, 上面曾经将过的C的求三次方的宏, 用Lisp来写是这样子: (defmacro triple (x) `(+ ~x ~x ~x)) (译注: 在Common Lisp中, 此处的单引号应当是反单引号...这里作者所用的记号是自己发明的一种Lisp方言Blaise, 和common lisp略有不同, 事实上, 发明方言是lisp高手独有的乐趣, 很多狂热分子都热衷这样做。

    1.8K60

    深入浅出 Babel 下篇:既生 Plugin 何生 Macros

    你可以认为,宏就是用来生成代码的代码,它有能力进行一些句法解析和代码转换。...另外 Lisp 支持数据和代码之间的转换 由于 Lisp 这种简单的语法结构,使得数据和程序之间只有一线之隔(quote修饰就是数据, 没有quote就是程序), 换句话说就是程序和数据之间可以灵活地转换...所以大部分宏实现会参考 Lisp 的S-表达式,取折中方案,将传入的程序转换为Tokens,再组装成类似quoted的数据结构。...所以,任何适合显式去转换的场景都适合用Babel Macro来做: 特定框架、库的代码转换。如 styled-components 动态生成代码。preval 特定文件、语言的处理。...Ok, 文章到这里基本结束了。本文对‘宏’进行了深入的讨论,从 C 语言的文本替换宏到濒死的Sweet.js, 最后介绍了babel-plugin-macros.

    1.5K31

    为什么Lisp语言如此先进?(译文)

    思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。 术语"宏"在Lisp语言中,与其他语言中的意思不一样。...Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。...就我所知,宏(采用Lisp语言的定义)目前仍然是Lisp独有的。一个原因是为了使用宏,你大概不得不让你的语言看上去像Lisp一样古怪。...以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到10倍。...、到处都是bug的、运行速度很慢的Common Lisp实现。"

    1.2K60

    不管是嵌套 XML,还是 Lisp 嵌套括号,还是 XXX 的 Map 数据结构,一切都是树形结构——映射。Lisp的本质(The Natur

    它是XML, 它是标 准格式的数据。我们也知道, 它可以通过内存中的树结构来生成(GCC-XML做的就是这个事 情)。它保存在不可执行的文件中。我们可以把它解析成树节点, 然后做任意的转换。...我许诺过会以一种全新的方式来解释Lisp, 我要重申我的许 诺。但是我们此刻还没有到预定的地方, 所以还是先继续上边的讨论。...而且, Lisp没有语义约束, 你可以构造 任何数据结构, 只要你原意。 Lisp通过宏(macro)来做元编程。我们写一组宏来把任务列表(to-do list)转换为专用领 域语言。...实际上, 编译器会替我们工作, 调用相应的宏。我们所要做的, 仅仅是创建一个把数据转换为适当代码的宏。...例如, 上面曾经将过的C的求三次方的宏, 用Lisp来写是这样子: (defmacro triple (x) `(+ ~x ~x ~x)) (译注: 在Common Lisp中, 此处的单引号应当是反单引号

    1.4K20

    一文读懂基于 Yaegi 解释器开发可热插拔的 Traefik 插件

    在类型检查之通过后,Go 编译器会将抽象语法树转换为目标机器代码。具体的代码生成过程会依赖于操作系统和编译器架构等因素。...它支持动态类型、高阶函数、闭包、宏扩展等 Lisp 特性,并能够直接调用 Go 语言的函数和方法。...6、Golo:Golo 是一个基于 Go 语言实现的 Lisp 解释器。它支持大多数的 Lisp 特性,包括宏扩展和动态类型。...与上述相比较,Golo 是一个更加复杂和功能更为丰富的 Lisp 方言,其语法和特性与 Common Lisp 有很多相似之处。...它支持静态类型、多重继承、泛型、宏扩展等特性,并且具有内置的模块系统和 REPL(交互式解释器)。

    1.9K51

    Emacs 折腾记

    在搜索网友们对此的经验之谈的时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言的神的编辑器上。...,以前就听说过有 Evil 这么个东西,试了一下发现这货还真是强大,常用的编辑模式、快捷键、命令,甚至宏和正则表达式等等操作都模拟得很好,跟在 gVim 里感觉一模一样,平移编辑习惯的坡度一下没了。...Common Lisp 开发环境 学习 Common Lisp 是使用 Emacs 最主要的任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...本来什么也不用配置的情况下 M-x ielm 就能进入一个 Emacs Lisp 的 REPL,但是它与 Common Lisp 毕竟还是有区别,所以还是另配置一个。...在 ~/.emacs 文件里加上: M-x slime 就可以进入到 REPL 进行 Common Lisp 的学习了。

    1.3K20

    Emacs 折腾记

    在搜索网友们对此的经验之谈的时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言的神的编辑器上。...这么个东西,试了一下发现这货还真是强大,常用的编辑模式、快捷键、命令,甚至宏和正则表达式等等操作都模拟得很好,跟在 gVim 里感觉一模一样,平移编辑习惯的坡度一下没了。...Common Lisp 开发环境 学习 Common Lisp 是使用 Emacs 最主要的任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。...本来什么也不用配置的情况下 M-x ielm 就能进入一个 Emacs Lisp 的 REPL,但是它与 Common Lisp 毕竟还是有区别,所以还是另配置一个。...)) (slime-setup '(slime-company)) M-x slime 就可以进入到 REPL 进行 Common Lisp 的学习了。

    1.9K10

    写本Racket入门书

    但Paul Graham在「黑客与画家」中对lisp的无比推崇又让我一直如鲠在喉,不征服lisp仿佛自己始终没能窥探编程的奥义,那种感觉,估计和搞到了法国却搞不定约瑟芬的拿破仑一样一样的。...邂逅变成了天天守望,每天早上起床到9点前,下午6点后至睡觉,我都沉浸在与Racket互动带来的愉悦之中,以至于回家像女神索吻,女神吓得一边躲一边娇嗔:「爸爸要刮胡子了」,我才意识到,胡子又开始大面积覆盖我那黝黑中透着阳光的脸蛋...不少读者在看了我周二的文章「走进 racket(lisp) 的世界」后自豪地说自己的学校就开设了Racket的课程,作为编程入门语言,这真是羡煞死我。...能写点简单的程序,做个动画,画个图,用regex处理下文本,定义一些简单的语法聊以自慰(你可以打开github repo下的util/common.rkt自行观看,不要鄙视我)。...:介绍raco及主要的Racket packages 8) 可爱的宏:这是肉戏,也是lisp的精髓 9) 用宏来设计你的语言:假象一门语言,用Racket实现 10) 延迟计算:讲讲continuation

    2.4K80

    Clojure 开发那些事

    除了最基本的圆括号()外,方括号[]与花括号{}在 Clojure 用的也比其他 Lisp 方言中多。...这一点非常重要,估计也是为什么 Clojure 较其他 Lisp 方言更流行的原因。...Emacs + Cider 的组合相比 Intellj + Cursive 最大的优势就是对宏的支持,Cider 提供了对宏展开的快捷键,但在 Cursive 中我没找到,不过宏也是比较高级的功能,初学者应用用不到...等各种参数,也可能是我个人的理解能力比较差,不过这里介绍一个非常实用并且适用于所有语言的方法,那就是看这个项目的test,test 里面核心的功能肯定会涉及到,然后照猫画虎就可以了。...Intellj Debug Mode 借助于 IDE 的优势,我们可以打断点,一步一步调试,但是 Cursive 对宏的支持比较有限,目前出来把宏展开外,没找到好的调试宏的好方法。

    1.6K20

    Clojure 学习入门(1)—— 学习资料

    与其他Lisp一样,Clojure认为代码即数据,同时有复杂的宏系统。 Clojure 的理念和特性 Clojure是什么,为什么有人要学这门语言?...它第一个对外的发行版是在2007年秋季的时候发布的,在2009年5月发行了第一个稳定版,到这个时候,它已经培育了一个活跃的、充满热情的社区,一个欣欣向荣的开发工具和类库的生态系统,它们被用在迅速增长的一系列专业的应用程序中...烧录进" (嵌入)到 Clojure编程语言的底层....年7月) 1983 – Ada 1984 – Common Lisp 1984 – MATLAB 1985 – Eiffel 1986 – Objective-C 1986 – Erlang 1987...1989 – FL 1990 – Haskell 1991 – Python 1991 – Visual Basic 1993 – Ruby 1993 – Lua 1994 – CLOS (ANSI Common

    1.4K10

    Bun 原生 JavaScript 打包器登场,引入宏

    此外,打包器生成针对 Bun 运行时优化的预编译文件,消除冗余的转换步骤并提高整体执行性能。统一插件 API 允许插件扩展打包器和 Bun 的运行时能力,并提升灵活性和代码重用性。...宏在打包过程的转换器阶段同步执行,并在多个 JavaScript Worker 之间并行化,确保高效执行。宏有助于在打包时执行获取请求等操作或提升开发者灵活性。...宏的结果必须是可序列化的,以便无缝内联到抽象语法树(AST)中。与 JSON 兼容的数据结构可以全面被支持,但函数和大多数类的实例是不可序列化的。宏只接受在打包时静态、已知的值作为输入。...模块作者可以在他们自己的构建过程中进行任意编译时代码生成。” 然而,开源贡献者 goranmoomin 也表达了不同的观点: “宏应该能够对代码执行语法转换。...Lisp 因其可以将代码表示为 List 而闻名于世。Rust 的编译器级 API 可以接受节点(token)并运行任意代码,然后吐出新的节点(token)。”

    45740

    编程语言|编译原理

    关于昨天的思考: 编译器的各个步骤有哪些? 能否省略其中某个步骤 编译器是怎样解析代码的? 什么是语法树? 怎样生成目标程序? 语义分析和语法分析有什么不同? 中间代码是怎么生成的?...一开始,一个汇编语言中的指令仅仅是机器指令的助记表示,后来,宏指令被加入到汇编语言中,这样,程序员就可以通过宏指令为频繁使用的机器指令序列定义带有参数的缩写。...走向高级的重大一步: 20世纪50年代后五年,用于科学计算的Fortran语言,用于商业数据出路的Cobol语言和用于符号计算的Lisp语言被开发出来。...当前: 有几千种程序设计语言,分类方式很多,其中按照语言的代可以这样分类: 第一代:机器语言 第二代:汇编语言 第三代:Fortran,Cobol,Lisp,C,C++,C#,Java(高级程序设计语言...) 第四代:为特定应用设计的语言,比如用于生成报告的NOMAD,用于数据查询的SQL,用于文本排版的Postscript。

    2K30

    人工智能技术入门该读哪些书?StackOverflow上最推荐这些

    本书是游戏人工智能方面的经典之作,畅销多年,主要讲述如何使游戏中的角色具有智能,先介绍了游戏角色的基本属性及常用数学方法,接着深入探讨游戏智能体状态机的实现,提到了图在游戏中的用途及各种不同的图搜索算法...全书的论述过程由浅入深,从数学基础到精确的理论算法,从简单的词法分析到复杂的语法分析,适合不同水平的读者群的需求。 中译本《统计自然语言处理基础》由电子工业出版社出版,定价55元,易断货。...实用Common Lisp编程 ? Practical Common Lisp的作者是Peter Seibel,加州大学伯克利分校教授。...本书是一本不同寻常的Common Lisp入门书,介绍了作者的学习经历,分别讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现、S-表达式、函数与变量、标准宏与自定义宏等,然后通过...本书适合Common Lisp初学者及对其感兴趣的相关人员。 中译本《实用Common Lisp编程》定价89元,各大电商平台都有,偶尔断货。

    1.3K51

    你的CAD图纸被盗了吗?

    CAD病毒: AutoCAD设计图纸软件可以执行自己的LISP脚本文件,就如同Office的宏脚本一样,设计初衷是为了方便设计师的操作,但由于设计不当,更或者是说,人心难测,利益熏心,进而恶意利用此“漏洞...通常CAD脚本恶意功能(举例): 1 注册表操作 2 文件操作 3 调用一些COM组件 4 调用CMD 可见CAD脚本也是十分强大的,基本和Office 宏差不多,只不过其语法独特,还有用户量少,致使其病毒也不多...CAD结合VBS病毒: 这次分析的是CAD和VBS结合的一种蠕虫病毒,由CAD生成VBS,并且再次打包恶意CAD脚本进行邮件传播,并且偷取用户图纸文件,可谓是“狼狈为奸”。...CAD脚本的功能: 1、执行,复制,生成VBS。 ? 尝试将自身复制到以下位置: ? 并且增加只读和隐藏属性,运行自删除。 ?...AutoCAD Support目录中的lisp文件首先它检查安装了哪个版本的AutoCAD: ? ? 蠕虫就会尝试找到acadVersion.lsp文件,并向其添加代码: ?

    1.3K90

    clojure基础入门(一)

    阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以方便的互相调用,这样开发的程序可以很好的结合java和clojure...解压后用命令行进入到clojure目录下,输入下面命令进入REPL命令行交互界面: java -cp clojure-1.7.0.jar clojure.main ?...注意if是不是函数或宏,而是叫做special form(特殊形式),而且没有else,用空白或换行即表示else,不用显式return,clojure会将最后一个表示的值作为函数的返回值。...clojure中(lisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以只要看到后面带问号的函数名,就知道这一定是一个判断语句。 user=> (fn?...宏(macro)           Clojure中几乎所有的函数和宏都是用Clojure代码实现的,关于宏后面再说。

    1.3K40
    领券