创建仿函数时出现 Mozart 错误 "illegal use of nesting marker"
Mozart error "illegal use of nesting marker" when creating a functor
使用仿函数编译 Oz 代码时,在声明“仿函数”的行出现“非法使用嵌套标记”错误。这意味着什么?
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
首先,您缺少 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
end
functor
s 是模块的定义,您在其中将导入和导出定义为文件。您应该编译文件并将其转换为模块。例如,调用你的文件 test.oz 和 运行 下面的命令来编译和 运行.
ozc -c test.oz && ozengine test.ozf
如果您通过向编译器提供缓冲区来 运行ning 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}}
% >>> 8
使用仿函数编译 Oz 代码时,在声明“仿函数”的行出现“非法使用嵌套标记”错误。这意味着什么?
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
首先,您缺少 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
end
functor
s 是模块的定义,您在其中将导入和导出定义为文件。您应该编译文件并将其转换为模块。例如,调用你的文件 test.oz 和 运行 下面的命令来编译和 运行.
ozc -c test.oz && ozengine test.ozf
如果您通过向编译器提供缓冲区来 运行ning 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}}
% >>> 8