作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
按照 Paul Graham 的 Bel 规范 ( bel reference )他这样定义“mac”宏:
(mac mac (n . rest)
`(set ,n (macro ,@rest)))
这不是循环吗?如果您使用“mac”来定义 mac,解释器如何知道 mac 的值是什么?
最佳答案
这不用于定义 mac
运算符。编译器已经内置了如何编译宏的知识。
这用于使定义对应用程序代码可见。
这种明显的循环可以在大多数 Lisp 实现中找到。许多年前,当我在 Symbolics 源代码中看到这个时,我感到很困惑:
(defun car (cons)
(car cons))
(defun cdr (cons)
(cdr cons))
(defun cons (car cdr)
(cons car cdr))
SBCL 中也有类似的代码。
它之所以有效,是因为编译器具有针对这些函数的内置代码生成器。此代码用于为它们创建运行时函数对象,因此您可以使用类似的东西
(symbol-function 'car)
关于recursion - Paul Graham 在他的 Bel 引用文献中如何解决 mac 的循环性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59712151/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我对描述 PHP 内部工作原理、陷阱和一些高级功能的文献(互联网上的文章、杂志、书籍、播客 - 我真的不介意任何东西)很感兴趣。那里有这样的东西吗?我试着在谷歌上搜索,但大多数文章都是关于从 PHP
我知道这个问题的答案是否可能是主观的,(而且我还没有找到类似的问题)但我的问题如下: 我在互联网/文献上看到过不同来源的代码片段,其中一个来 self 项目中的队友。通常他们中的一些人会采用类似...
我是一名优秀的程序员,十分优秀!