lambda - 球拍、“#lang peg”和“case”
问题描述
我正在尝试生成一个生成球拍“案例”的“#lang peg”规则。
我来自 Common Lisp,我试图通过将一些列表粘合在一起,然后对它们进行 eval 来在宏中创建一个 lambda 表达式。我得到:
"e=(lambda (w k) (println (quote hello)))"
"(syntax? e)->#f, (pair? e)->#t"
lambda: unbound identifier;
also, no #%app syntax transformer is bound in: lambda
(当我尝试(eval e)时出现上述错误)。
(调试用(格式“~a”)打印)。
[我想我想用生成的 (case) 替换上面的 (println (quote hello)),然后评估整个 shebang]。
我孤立的“#lang peg”测试似乎可以工作,但较大的“#lang peg”代码块如上所述失败。
我不知道如何调试这个。
“宏步进器”仍然灰显。(要么它在 Racket 8.2 中被破坏,要么我不知道如何使用它)。
我猜上面的“lambda”是在其他范围内创建的,但不是在我的测试中。
如何检查“lambda”符号?
我的测试中的“lambda”与较大代码中的“lambda”有所不同。
我愿意相信这是一个不好的方法。将不胜感激有关更好方法的提示。
是否有从“#lang peg”规则生成“案例”的示例?
解决方案
推荐阅读
- c++ - C++ 多类型赋值
- github-actions - 在 Github 操作上安装 R 包本身
- julia - LoadError:Julia for 循环中的 UndefVarError
- java - Android WorkManager 和 Worker
- gcc - arm-none-eabi-gcc 与 nucleo L432KC 板
- java - 无法为简单的控制器运行 Spring Boot 测试
- python - 是否可以从条目小部件或文本小部件在树视图中插入多行文本?或类似的东西?
- c# - 自定义调整窗口大小
- python - Python Tkinter 应用程序将焦点从打开的文件夹中移开
- javascript - 如何条带化 HTML标记并将其替换为
?