- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近使用了 cl-ppcre 包,我很好奇他们如何优化这个包,因为我想学习优化 common lisp。我注意到他们在声明表达式中经常使用 Sharpsign Dot,例如 here .优化设置为here .
他们为什么这样写?有什么好处吗?或者某些规则与他们有关?
更新:
我跑
(defvar *b* '(optimize speed))
(pprint (macroexpand-1 '(declaim *b*)))
(pprint (macroexpand-1 '(declaim #.*b*))) ;; => this one is right
#.
甚至在宏调用之前会评估值吗?喜欢它首先评估值并在宏参数中替换它。
最佳答案
Sharpsign Dot将在读取时评估下一个表达式。因此,它将充当读者得到结果而其他级别的 CL 不知道这一点。由于评估规则,依赖文字的宏不能被动态化,因此读取时间宏将绕过这一点,并使其成为动态表达式对于阅读器之外的其他级别是文字的。
好处是额外级别的元编程。
关于lisp - 使用 Sharpsign Dot 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59003016/
我见过这个用过一次,但不明白它的作用。引用资料说是 #n=object reads as whatever object has object as its printed representatio
我最近使用了 cl-ppcre 包,我很好奇他们如何优化这个包,因为我想学习优化 common lisp。我注意到他们在声明表达式中经常使用 Sharpsign Dot,例如 here .优化设置为h
我想按照“Common Lisp Recipes”一书的建议,在 case 宏中使用常量变量。 10-2。在 CASE 宏中使用常量变量作为键 不幸的是,它在 Clozure CL 中不起作用。 (d
我刚刚阅读了 Sharpsign 冒号读取器宏,听起来它与 gensym 具有非常相似的效果 Sharpsign Colon: "introduces an uninterned symbol" Ge
我是一名优秀的程序员,十分优秀!