在命令行中执行Mozart-Oz代码

时间:2015-03-21 01:02:39

标签: oz mozart

我正在尝试使用Mozart Oz。 我从source forge下载执行二进制文件:http://sourceforge.net/projects/mozart-oz/

启动Mozart.app时,emacs(适用于Mac OS X的aquamacs)开始在其中进行编码。

例如,我可以输入{Browse 'Hello World'}并执行Oz -> Feed Buffer以在Tcl / Tk浏览器中获得结果。

然后,我如何在命令行中构建或执行Oz代码,就像我使用Python或Ruby一样?

我在bin目录中找到了二进制文件。

/Applications/Mozart2.app/Contents/Resources/bin
    ├── oz
    ├── ozc
    ├── ozemulator
    ├── ozengine
    └── ozwish

但是,当我使用ozc -c hello.oz执行代码时,出现%** variable Browse not introduced错误。可能有什么问题?

1 个答案:

答案 0 :(得分:5)

您必须使用Browser.browse

实际上,在以oz为单位构建应用程序时,必须导入/创建每个函数。导入浏览器时,将获得包含浏览器对象类导出的所有函数的记录。 (见https://mozart.github.io/mozart-v1/doc-1.4.0/browser/node2.html

因此,您的代码是

functor
import
   Browser
define
   {Browser.browse 'Hello World'}
end

我应该使用{Application.exit 0}退出应用程序,但它给了我一个奇怪的错误...... 无论如何,我建议不要使用浏览器。即使它在使用交互式解释器时非常强大,但它很重且有缺陷。请改用System.showInfo,如果你真的需要,可以构建自己的TK窗口。

functor
import
    System
    Application
define
    {System.showInfo 'Hello World!'}
    {Application.exit 0}
end

编译它
$ ozc -c hello.oz

然后用

运行它
$ ozengine hello.ozf