Compiler errors ocaml中的环境-“类型a';环境`
我需要在ocaml中声明和使用环境。在我的学习手册中,我发现以下代码:Compiler errors ocaml中的环境-“类型a';环境`,compiler-errors,syntax-error,ocaml,Compiler Errors,Syntax Error,Ocaml,我需要在ocaml中声明和使用环境。在我的学习手册中,我发现以下代码: type a' env = (string * 'a)list;; exception WrongBindList;; let emptyenv(x) = [("", x)];; let rec applyenv(x, y) = match x with | [(_, e)] -> e | (i1, e1) :: x1 -> if y = i1 then e1
type a' env = (string * 'a)list;;
exception WrongBindList;;
let emptyenv(x) = [("", x)];;
let rec applyenv(x, y) = match x with
| [(_, e)] -> e
| (i1, e1) :: x1 -> if y = i1 then e1
else applyenv(x1, y)
| [] -> failwith("wrong env") ;;
let bind(r, l, e) = (l, e) :: r ;;
type evT = Unbound | FunVal of evFun | RecFunVal of string*evFun
and evFun = string * exp * (evT env);;
但是当我运行代码时,我得到以下错误:
Type exp defined.
#Toplevel input:
>type a' env = (string * 'a)list;;
> ^^^
Syntax error.
为什么我会犯这个错误?我很想知道我做错了什么。您需要将引号放在类型变量名之前,而不是后面:
type 'a env = (string * 'a) list
您需要将引号放在类型变量名称之前,而不是后面:
type 'a env = (string * 'a) list
a类环境
应为a类环境
'a
是一个类型变量,名称前带有撇号。在等号的右侧也会再次提到它a'
只是一个之前未定义的标识符,但在该位置显然不具有语法效力。类型a“env
应该是类型a env
'a
是一个类型变量,名称前带有撇号。在等号的右侧也会再次提到它<代码>a'只是一个以前未定义的标识符,但在该位置显然在语法上无效。这与“a而非a”的顶层输入相同:>键入“a环境=(字符串*”a)列表;;>^语法错误。我不明白这个问题。它们都应该是'a
这与'a而不是'a'是一样的#顶级输入:>键入'a env=(string*'a)list;;>^语法错误。我不明白这个问题。它们都应该是'a
请不要编辑您的问题,使其含义改变,并且使所有现有答案变得毫无意义。本网站旨在作为有用问题和答案的存储库,而不是帮助台。如果你有一个新问题,你应该发布一个新问题,而不是编辑旧问题,这样它们对其他人可能仍然有用。不过,老实说,你真的应该能够自己解决这些问题。请参阅。停止编辑您的帖子!您的错误是您编写了a'
,而不是'a
。如果更正后仍有错误,请添加水平规则并解释新错误或创建新问题。但是,请停止编辑你的帖子。请不要编辑你的问题,使其含义发生改变,并且使所有现有的答案变得毫无意义。本网站旨在作为有用问题和答案的存储库,而不是帮助台。如果你有一个新问题,你应该发布一个新问题,而不是编辑旧问题,这样它们对其他人可能仍然有用。不过,老实说,你真的应该能够自己解决这些问题。请参阅。停止编辑您的帖子!您的错误是您编写了a'
,而不是'a
。如果更正后仍有错误,请添加水平规则并解释新错误或创建新问题。但是停止编辑你的文章。