Scheme 在哪里存储它的类型?

问题描述 投票:0回答:1

以下会引发错误:

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
的类型,但在环境中无法查找到它。如果类型没有存储在环境中,那么它存储在哪里?是否有一些隐藏的类型元环境?

scheme
1个回答
1
投票

记录的存储方式取决于实现,您无需了解即可使用该功能。最有可能通过语法扩展并使用现有类型来存储数据来完成。例如。他们可以使用向量,其中的字段转换为向量内的引用,并使用一些索引来指示它是一条记录以及修改后的

vector?
point?
将检查什么类型。

根据 R6RS,您的表达式将生成构造函数

make-point
和类型谓词
point?
point
不会绑定到任何东西,除非你明确指定它作为构造函数:

(define-record-type (point point point?)
  (fields 
    (immutable x point-x)
    (immutable y point-y)))
point  ; ==> #<procedure point>
point? ; ==> #<procedure point?>
© www.soinside.com 2019 - 2024. All rights reserved.