当使用函子编译Oz代码时,在声明" functor“的行中会出现”非法使用嵌套标记“的错误。这意味着什么?
functor
export
sum:Sum
divisao:Div
mult:Mult
sub:Sub
define
fun {Sum X Y} X + Y end
fun {Mult X Y} X * Y end
fun {Sub X Y} X - Y end
end发布于 2022-01-17 11:08:35
首先,您忽略了Div的定义。
functor
export
sum:Sum
divisao:Div
mult:Mult
sub:Sub
define
fun {Sum X Y} X + Y end
fun {Mult X Y} X * Y end
fun {Sub X Y} X - Y end
fun {Div X Y} X / Y end
endfunctor是指将导入和导出定义为文件的模块的定义。您应该编译该文件并将其转换为一个模块。例如,调用文件test.oz并运行以下命令来编译和运行。
ozc -c test.oz && ozengine test.ozf如果通过向编译器提供缓冲区来运行Mozart,则不能直接使用functor,因为必须将其转换为模块。您必须首先声明它,并使用Module.manager应用它。
declare F M ModMan
F = functor
export
sum:Sum
divisao:Div
mult:Mult
sub:Sub
define
fun {Sum X Y} X + Y end
fun {Mult X Y} X * Y end
fun {Sub X Y} X - Y end
fun {Div X Y} X / Y end
end
% To use the functions of the functor, apply it and create a module
ModMan = {New Module.manager init}
M = {ModMan apply(F $)}
% Then use the exported functions with module M
% Example:
{Show {M.sum 3 5}}
% >>> 8https://stackoverflow.com/questions/70658328
复制相似问题