Scheme类型存储位置?define-record-type定义类型无法查找问题
Chez Scheme中
define-record-type的类型存储问题 先还原你的代码执行场景:
Chez Scheme Version 9.5.8 Copyright 1984-2022 Cisco Systems, Inc. > (define-record-type point (fields x y)) > point Exception: invalid syntax point
直接引用point报错的原因
Chez Scheme标准用法下的define-record-type,不会将类型名point作为变量绑定到当前环境。它的核心作用是生成一组操作该记录类型的工具函数:
- 构造函数:默认是
make-point - 访问器:
point-x、point-y - 谓词:
point?
你可以直接调用这些生成的函数操作记录:
> (define p (make-point 1 2)) > (point-x p) 1 > (point? p) #t
类型元数据的存储位置
记录类型的元数据确实存在于Chez Scheme的内部元环境中,但这个元环境对外不可直接访问。你无法通过直接引用类型名获取它,只能通过记录谓词等操作间接感知它的存在。
如果需要显式将类型绑定到环境中,可以使用Chez Scheme支持的define-record-type扩展语法,指定类型的绑定名称:
> (define-record-type (point point-type) (fields x y)) > point-type #<record-type point>
这里的point-type就是绑定到环境中的类型对象,你可以直接引用它,用于自定义记录打印行为等高级操作。
内容的提问来源于stack exchange,提问作者ceving
相关产品推荐
相关产品推荐

