我在这段代码中遇到了一个严重的语法错误
deleted更具体地说,这个错误:
xxx:22.0: define-type: bad syntax in: xxx
#(739 316)我刚接触这门语言,所以有没有人愿意告诉我我的代码出了什么问题,以及如何消除这个错误?
发布于 2017-09-15 02:23:11
以下是导致语法错误的有问题的行
i --> [give (expr1 OE?) name (id-ref1 symbol?) in (expr2 OE?)]
ii --> [(string-literal string?)]
iii --> [(id-ref2 symbol?)]正如docs中所指出的,define-type具有如下结构
(define-type type-id variant ...)哪里
variant = (variant-id (field-id contract-expr) ...)因此,每个变量必须有一个变量id,每个field-id必须有一个相关的约定。违反这一点是语法错误的原因。
在(i)的情况下,name和In都缺少合同,因此一个可能的修复方法是将合同添加到字段中(使用string?作为示例合同):
[give (expr1 OE?) (name string?) (id-ref1 symbol?) (in string?) (expr2 OE?)](ii)和(iii)都缺少variant-ids,所以添加它们可以解决这个问题:
[some-variant-id (string-literal string?)]
[some-other-variant-id (id-ref2 symbol?)]以下是该类型的可能重写,并建议进行更改:
(define-type OE
(group (expr1 OE?) (expr2 OE?))
(sequentially (expr1 OE?) (expr2 OE?))
(together (expr1 OE?) (expr2 OE?))
(join (expr1 OE?) (expr2 OE?))
(arrive (expr OE?))
(give (expr1 OE?) (name string?) (id-ref1 symbol?) (in string?) (expr2 OE?))
(some-variant-id (string-literal string?))
(some-other-variant-id (id-ref2 symbol?)))https://stackoverflow.com/questions/46209715
复制相似问题