我在这段代码上遇到错误的语法错误
deleted
更具体地说,这个错误:
xxx:22.0: define-type: bad syntax in: xxx
#(739 316)
我是该语言的新手,所以有人可以告诉我我的代码有什么问题以及如何摆脱错误?
答案 0 :(得分:0)
以下是导致语法错误的问题行:
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) ...)
因此,每个变体必须具有 variant-id ,并且每个 field-id 必须具有关联的合同。违反此行为是语法错误的原因。
对于(i)
,名称和中的都缺少合同,因此可能的解决方法是在字段中添加合同(使用{ {1}}作为示例合同):
string?
[give (expr1 OE?) (name string?) (id-ref1 symbol?) (in string?) (expr2 OE?)]
和(ii)
都缺少 variant-ids ,因此添加它们可以解决问题:
(iii)
这是一种可能的类型重写,包含建议的更改:
[some-variant-id (string-literal string?)]
[some-other-variant-id (id-ref2 symbol?)]