首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mozart在创建函子时出错“非法使用嵌套标记”

Mozart在创建函子时出错“非法使用嵌套标记”
EN

Stack Overflow用户
提问于 2022-01-10 20:07:11
回答 1查看 118关注 0票数 0

当使用函子编译Oz代码时,在声明" functor“的行中会出现”非法使用嵌套标记“的错误。这意味着什么?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-17 11:08:35

首先,您忽略了Div的定义。

代码语言:javascript
复制
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是指将导入和导出定义为文件的模块的定义。您应该编译该文件并将其转换为一个模块。例如,调用文件test.oz并运行以下命令来编译和运行。

代码语言:javascript
复制
ozc -c test.oz && ozengine test.ozf

如果通过向编译器提供缓冲区来运行Mozart,则不能直接使用functor,因为必须将其转换为模块。您必须首先声明它,并使用Module.manager应用它。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70658328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档