首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >方案:将内部宏定义传递给子宏?

方案:将内部宏定义传递给子宏?
EN

Stack Overflow用户
提问于 2013-12-31 05:21:38
回答 2查看 265关注 0票数 2

考虑R7RS方案中的以下宏定义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(define-syntax foo
  (syntax-rules ()
    ((_ bar)
      (begin
        (define baz 42)
        (define-syntax bar
          (syntax-rules ()
            ((_) baz)))))))

我已将此文件加载到chibi-scheme的repl中,并输入:

(foo bar) (酒吧)

我得到的不是预期的输出42,而是:

错误:未定义变量: baz

为什么是这样,如何将外部宏中定义的baz值传递给内部宏?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-31 11:46:49

这是奇比方案中的一个错误.宏定义需要捕获其环境;对于bar,环境由bar本身和baz组成。然后,当您在另一个环境中展开bar时,宏展开需要认识到baz被绑定在定义的env中。chibi-方案显然不承认baz实际上是定义的.

另外,您在文章中没有看到的另一个相关问题是,即使bar的扩展承认baz是绑定的,代码的加载/运行也需要找到baz的值。

以下是R6RS Ikarus计划:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> (define-syntax foo
  (syntax-rules ()
    ((_ bar)
      (begin
        (define baz 42)
        (define-syntax bar
          (syntax-rules ()
            ((_) baz)))))))
> (foo bar)
> (bar)
42
> 
票数 1
EN

Stack Overflow用户

发布于 2013-12-31 11:06:43

我在我的测试套件中支持语法规则的所有方案上都运行了这个程序,而且它只在Chibi和MIT上失败。我看不出有什么理由不应该这样做,但我承认,对我来说,宏观学仍然是一门黑色的艺术。特别地,它工作在Foment,这是一个R7RS系统。我没有能力建造射手座,所以我不能在那里测试它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20858053

复制
相关文章
B+树索引使用(7)匹配列前缀,匹配值范围(十九)
上篇文章索引的代价,b+树占的空间比较大,增删改对b+树每个节点的索引排序影响也很大,时间耗费长,所以没有必要不要乱建索引,还介绍了索引的最左原则和全值查询。
用户9919783
2022/07/26
9990
基因注释:区间范围匹配
今天,有老师问我一个问题,如果从一个区间匹配到另一个的区间范围,并找出来。我觉得比较有代表性,就写篇博客总结一下。
邓飞
2022/12/13
7020
基因注释:区间范围匹配
正则表达式范围匹配
近期小编在进行评测语料的制作时,涉及到一些复杂字符串的过滤和提取等内容,例如找出某一句话中在某个特定语句结构下出现的文字,虽然使用循环,if-else等语句可以搞定,但是比较麻烦,使用正则表达式处理就比较方便。
用户5521279
2020/03/19
3.2K0
时间范围内查找
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
收心
2022/10/28
6200
mysql 根据时间范围查询
如果传入的格式是YYYY-MM-DD 的 没有带时分秒,按照上面两种写法会差不全。
全栈程序员站长
2022/09/13
4.8K0
Postgresql模糊匹配案例(包括中文前后模糊)
test 04 使用对应的pattern ops走索引在zh_CN也是列时也走索引
mingjie
2022/05/12
2.4K0
elui实现时间范围筛选
效果图 [2022-03-08_070538.png] 实现步骤 el-date-picker页面使用 <el-form-item label="报修时间"> <el-date-picker v-model="dateRange" size="small" style="width: 240px" value-format="timestamp" type="daterange"
用户6493868
2022/03/08
9010
时间范围占比工具类
/** * 时间范围占比 * * @param st 开始时间戳 * @param et 结束时间戳 * @param cst 对比开始时间戳 * @param cet 对比结束时间戳 * @return 占比 * @author liushouyun */ public static Tuple2<Integer, Double> proportionOfTimeRange(long st, lon
房上的猫
2020/02/20
6310
时间控件(选择时间范围的插件)「建议收藏」
后台开发,一般都是有筛选条件的查询,那么问题就来了,根据日期范围搜索的情况下,插件要怎么选????
全栈程序员站长
2022/08/25
5.4K0
时间控件(选择时间范围的插件)「建议收藏」
python 计算周的范围时间
week_len = ["", 2, 3, 4] week_time_list = ["2021-09-06", "2021-09-27"] ne = [] print(week_time_list) for j in range(0, len(week_len)): c = ne[-1] if len(ne) > 0 else week_time_list[0] end_date = datetime.strptime(c, '%Y-%m-%d') now_date_end =
Wyc
2021/09/23
1.6K0
python 计算周的范围时间
element-ui 日期时间选择框picker-options如何禁用时间范围( 多个时间范围判断 )
1. element-ui 算是我们在开发中用到最多的pc端 ui框架,今天公司正好有一个需要用到 date-picker 的日期插件
小蔚
2023/07/10
8520
element-ui  日期时间选择框picker-options如何禁用时间范围( 多个时间范围判断 )
GWAS分析后的基因注释:区间范围匹配
图1是SNP的上下游区间,图2是基因的上下游区间,想以图1为标准,将区间内有基因的行放到右边。
邓飞
2023/09/06
9580
GWAS分析后的基因注释:区间范围匹配
linux shell grep 匹配多个字符 和向下匹配多行范围 用法
cat 1.txt | grep -v -E "ok=2|changed|TASK" # grep -v 不匹配, # -E 匹配多个 用管道隔开 | cat 1.txt | grep -A 3 "date" # grep -A 3 在匹配字符date 往下3三行的所有数据 -A是显示匹配后和它后面的n行。 -B是显示匹配行和它前面的n行。 -C是匹配行和它前后各n行。
eisc
2021/06/21
5.4K0
bootstrap-datepicker限定可选时间范围
实际应用中可能会根据日期字段查询某个日期范围内的数据,则需要对日期选择器可选时间进行限制,
全栈程序员站长
2022/09/10
1.8K0
bootstrap-datepicker限定可选时间范围
最后更新修改时间提示【可配置时间范围】
原文:https://laolion.com/archives/2547.html 今天在老狮的博客里到一个类似的博文,于是在本站也弄了一个,但样式并不符合我的审美,所以参照了一下Joe6.1版的时间提示样式改了改。
用户7162790
2022/03/23
6170
判断当前时间是否在某个时间范围内
判断当前时间是否在某个时间范围内 各种活动在接口判单当时间是否在【活动】范围内——小时-分钟 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class CutTime { /** * 判断是否满足时间内 * @param CutTime限制时间 * @return */ public static boolean cutTime(String
红目香薰
2022/11/28
1.7K0
PHP 获取 特定时间范围 类
目录 前序   用途   功能及事项   使用方法   代码及注释 前序:   总体来说,我更应该是一个 android 移动开发者,而不是一个 phper,如果说只做移动端的 APP ,我也不会学
林冠宏-指尖下的幽灵
2018/01/03
2.2K0
sequlize 查询时间范围和多表查询
前端传参时间范围 如:createdAtFrom = '', createdAtTo = '' ,并且在后端接收参数后给的默认值 ''
用户4793865
2023/01/12
2.6K0
Mysql时间范围查询不走索引问题
此时,虽然在create_time字段上添加了索引,但是否会走索引还需要看数据量的情况。
程序新视界
2022/05/06
4.7K0
oracle对时间范围比较的语句
一般在数据库语句中直接写某个时间条件例如:c_datetime<= ‘2014-08-06’或者between time1 and time2是会出错
粲然忧生
2022/09/28
1.1K0

相似问题

Django中的syncdb和更新数据库模式

10

django syncdb和更新的模型

70

更新到1.4后Django syncdb异常

116

django fabric syncdb

10

django中syncdb的问题

12
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文