首页
学习
活动
专区
工具
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.8K30

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.7K60

深入浅出 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代码长度是Lisp7倍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.3K20

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

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

1.3K51

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.8K10

写本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.3K80

Clojure 开发那些事

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

1.5K20

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.3K10

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

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

31440

编程语言|编译原理

关于昨天思考: 编译器各个步骤有哪些? 能否省略其中某个步骤 编译器是怎样解析代码? 什么是语法树? 怎样生成目标程序? 语义分析和语法分析有什么不同? 中间代码是怎么生成?...一开始,一个汇编语言中指令仅仅是机器指令助记表示,后来,指令被加入汇编语言中,这样,程序员就可以通过指令为频繁使用机器指令序列定义带有参数缩写。...走向高级重大一步: 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.2K90

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.5K30
领券