Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > Macros 初探
【标  题】:Macros 初探
【关键字】:Macros
【来  源】:http://www.cublog.cn/u/4614/showart.php?id=94838

Macros 初探

Your Ad Here 参考文章: 《Pratical Common Lisp》

7. Macros: Standard Control Constructs

http://www.gigamonkeys.com/book/macros-standard-control-constructs.html

    Macros 是Lisp特有的一种扩展机制,Macro 这个词本身在其他的语言以及软件中也有出现,但含义有所差别。实际上,Lisp的很多特性,比如动态特性、垃圾收集都已经被集成到其他的语言中,但 Macro还没有。
    Macro 就是通过程序生成程序的法宝,或曰产生式编程。
    语言一般通过标准库来实现扩展性,Macro是Common Lisp的另一种扩展方式。Macro可以定义自己的语法结构,这样可以自己扩展语言本身,使其更适合于问题域。
    Lisp 语言本身一些语法结构就是通过Macro 来实现的,比如 When unless

(defmacro when (condition &rest body)
`(if ,condition (progn ,@body)))

(defmacro unless (condition &rest body)
`(if (not ,condition) (progn ,@body)))


Macro Expansion Time 与 Running Time
    在Macro Expansion时,无法访问任何数据,因为那些是在running time才存在的。
Defmacro

(defmacro name (parameter*)
"Optional documentation string."
body-form*)
    写一个macro的过程是,首先写出他的调用形式,以及展开形式,然后翻译成 defmacro程序。简单的macro只需要直接的替换就可以,复杂的需要自己的程序逻辑及数据结构。最后需要注意不要遗漏其他的参数情况。避免leak。



   


Web/Continuation some point:【上一篇】
人工智能相关相关连接:【下一篇】
【相关文章】
  • 用可变参数宏(variadic macros)传递可变参数表
  • 【随机文章】
  • 确认测试的基本方法
  • 修改系统以支持中文显示
  • 在MySQL数据库中使用C执行SQL语句
  • shell的历史
  • 《用 .NET 开发的轻量级 UI 测试自动化》 的VS2005版本
  • UNIX系统操作命令大全
  • 内幕惊曝:腾讯QQ2005初体验
  • Java实验一----银行取款机(字符界面,用文本保存数据)
  • 转换中文日期的PHP程序
  • 对'Consistent Gets',''Physical Reads'和'DB Block Gets'的理解和解释
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.