- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个调用某些函数的宏。这些函数只能由宏使用,因此我将它们放在包装宏的 letfn
中。伪代码:
(letfn [(fn-a [] ...)
(fn-b [] ...)
(fn-c [] (fn-b))]
(defmacro my-macro [stuff]
`(let [whatever# (fn-a)]
(fn-c))))
对 fn-a
和 fn-c
的调用有效,但是当 fn-c
尝试调用 fn-b 时
我得到IllegalStateException: Attempting to call unbound fn: #'name.space/fn-b。这是为什么?
如果我将 fn-b
和 fn-c
放在它们自己的 defn
中,一切正常。但我不想这样做,因为它不干净。
编辑:为了测试,我尝试将函数绑定(bind)放入内部 let
中,但遇到了相同的异常。
最佳答案
我认为这种方式根本行不通。例如,对 fn-c
的调用扩展为 your.namespace/fn-c
,因此您的代码似乎调用了恰好具有相同名称的其他函数。但是您没有your.namespace/fn-b
,这会引发异常。
要引用非限定符号,您需要对其进行引号和取消引号:~'fn-a
但这也不起作用,因为局部函数在扩展时没有定义,您只能将它们用于宏本身。
您要么必须在命名空间中定义函数并在宏中限定它们,要么将它们包含在宏扩展中,这将在每次使用时再次定义它们。
关于macros - 非法状态异常 : Attempting to call unbound fn in macro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257883/
我遇到了一个小问题,请求您的帮助!使用 BeanIO 2.1 并处理固定长度文件,我当前正在尝试检索结构如下的记录 :28C:5n/5n ':28C:':修复 5 个数字(最多) '/':修复 5 个
我使用的 drscheme 来自: http://www.archlinux.org/packages/extra/x86_64/drscheme/ 我正在尝试使用教科书中的示例代码,但我不断收到“未
我正在尝试将一个整数参数 N 传递给 cake 并返回一个大小为 N 的 2 平方的列表(为了举例)。例如面包店:cake(3) => [4,4,4] 这是我迄今为止尝试过的: -module(bak
我正在使用 SLIME 来调试我的 Common Lisp 函数。在函数内部,我让它人为地发出错误信号(尝试“调试”——也许我应该单步执行),如下所示: (define-condition unkno
这让我陷入了困境(抱歉,我对 python 还是很陌生)感谢您提供任何形式的帮助。 错误 print Student.MostFrequent() TypeError: unbound method
自从我尝试将代码重构到不同的文件中以来,这个 Python 问题一直困扰着我。我有一个名为 object.py 的文件,其中的相关代码是: class Object: #this is a gener
需要一个关于如何将原始类型集合传递给未绑定(bind)函数/或操作以及如何返回原始类型集合的示例。 例如整数列表或数组。 这是一个简单的例子。 List GetEvenNumbers(List num
我使用 xsd.exe/out 从 XML 片段生成了一个 XSD 文件 它所做的是为某些元素创建 maxOccurs="unbounded" 属性。 如果我只希望该元素出现一次,而不是一个集合,我应
问题 为什么情况 2 会导致“未绑定(bind)占位符参数”,而情况 1 却可以? 案例1 val h: (Int => Int) = (x:Int) => { scala.util.Random.n
问题 为什么情况 2 会导致“未绑定(bind)占位符参数”,而情况 1 却可以? 案例1 val h: (Int => Int) = (x:Int) => { scala.util.Random.n
我试图在 Maven 下使用 wro4j(1.6.2 和 1.6.3-SNAPSHOT),但我遇到了 jquery.tablesorter.js 的问题插件。 在第 972 行(或附近)有一个 ecl
我想在一个时间窗口内尝试 avg() 聚合代码 select user_id,timestamp avg(y) over(range between '5 second' preceding and
我以前从未见过这个错误: TypeError:必须使用 test_imports 实例作为第一个参数调用未绑定(bind)方法 halt_listener()(取而代之的是 Queue 实例) 当我运
考虑以下示例 Simulink (Download example)系统: 输入是一个幅度和一个不断增加的角度,它将返回两个正弦,如预期的实部和虚部: 从实部和虚部计算幅度是没有问题的。获取域中的角度
对于我的高级高等计算类(class),我需要做一个项目,我的任务是制作太空入侵者,我以前从未使用过Python,到目前为止我对自己的进展非常满意,但是我最近遇到了一个我不知道的错误如何处理。代码如下。
我想创建一个python类来封装一些全局变量: class TestEnvironment(object): _on_out = None # ... @staticmetho
虽然最近将一个新项目导入到 eclipse 中,但有一次当我尝试添加 GROOVY_SUPPORT 库时,它会显示为“未绑定(bind)”并出现错误-X,如下所示: 它也没有像我预期的那样出现在包资源
如何在类定义后使类方法静态化?也就是说,为什么第三种情况会失败呢? >>> class b:... @staticmethod... def foo():... pass...>>> b.fo
我在完成项目后收到两条错误消息: 在解决构建路径错误之前无法构建项目。 未绑定(bind)的类路径容器:项目“method_test”中的“JRE 系统库 [OSGi/Minimum-1.2]” 我认
此代码显示未绑定(bind)异常,我尝试了所有组合..无法解决!! 整个代码是: 最佳答案 你需要这个 xmlns:android="htt
我是一名优秀的程序员,十分优秀!