问题标签 [oz]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
12110 浏览

oz - 对 Mozart/Oz 编程语言的看法?

我意识到 Oz 是一种相当晦涩的语言。我第一次听说它是在Programming Language Shootout中。然后我找到了这篇 Wikipedia 文章,其中指出Mozart/Oz支持 8 种不同的范式。

所以我试了一下。有很多文档,除了我发现它非常混乱和缺乏。我找不到任何书籍或其他文档,也找不到几个例子。此外,它似乎与我不太习惯的 Emacs 紧密集成。

你对这种编程语言有什么看法:这完全是浪费时间吗?或者有人可以指点我一些好的资源等吗?

另外,我不想使用 Emacs。我是否有任何其他选项,例如交互式解释器或正常的编译运行周期?

0 投票
2 回答
4812 浏览

oz - 如何在 Oz 中创建列表?

我正在尝试使用以下代码在Oz中创建一个列表:

Mozart 编译器显示代码被接受,但没有打开浏览窗口。我要做的就是在 Oz 中创建一个列表。

代码有什么问题?

0 投票
2 回答
707 浏览

oz - 如何在 Oz 中将整数转换为列表,反之亦然?

如何将整数转换为列表并返回Oz?我需要取一个数字321并将其反转为123.

Oz 中的 Reverse 函数仅适用于列表,因此我想将 321 转换为 [3 2 1],将其反转,然后将 [1 2 3] 转换回 123。这可以在 Oz 中完成吗?

0 投票
2 回答
1960 浏览

functional-programming - Oz 中的尾递归优化

Oz 教程中关于函数的章节中,它说:

类似于惰性函数式语言 Oz 允许某些形式的尾递归优化,这些优化在某些严格的函数式语言中找不到,包括标准 ML、Scheme 和并发函数式语言 Erlang。但是,Oz 中的标准函数定义并不懒惰。

然后继续显示以下函数,该函数在Oz中是尾递归的:

它的作用是将空列表映射到空列表和非空列表,映射到将函数应用于其头部的结果,然后将其添加到尾部F调用的结果中。Map在其他语言中,这不会是尾递归,因为最后一个操作是前置,而不是对Map.

所以我的问题是:如果“Oz 中的标准函数定义不是惰性的”,那么 Oz 做了什么,像 Scheme 或 Erlang 这样的语言不能(或不会?)能够为这个函数执行尾递归优化?Oz 中的尾递归函数究竟是什么时候?

0 投票
3 回答
1011 浏览

oz - 将列表转换为 Oz 中的字符串?

如何将列表转换为Oz中的字符串?

我有一个需要转换为字符串的字符列表,但在 Oz 文档中没有看到任何连接运算符。

0 投票
1 回答
702 浏览

oz - 然后是 Oz 关键字

我正在尝试编写分词器,但出现解析错误:

这是代码,我用 %=ERROR=% 标记了第 15 行和第 36 列

知道我做错了什么吗?

0 投票
1 回答
448 浏览

oz - 有新版本的莫扎特/盎司吗?

想知道是否有新版本的 mozart/oz 目前是 1.4。那是在 2008 年。一定有进步。

0 投票
1 回答
365 浏览

constraints - 如何在 Mozart/Oz 中创建非数字约束?

我想实现一个变量域为非数字的 CSP(类似于 [lisa ann mary joanna] )。有没有办法在 Mozart/Oz 中实现这一点?

0 投票
2 回答
4045 浏览

function - 在 Mozart Oz 中使用相同的代码时,函数和过程的行为会有所不同吗?

我尝试使用 2 种方法在 Oz 中打印出斐波那契数列:使用 Emac 作为编辑器的函数和过程。程序在这里:

和功能:

问题是唯一的程序“循环”有效。结果是:

函数“Loo”没有,它会抛出一些难以理解的错误:

我仍然不知道为什么。我认为函数和过程在 OZ 中具有类似的效果。

0 投票
1 回答
318 浏览

constraints - 在 Mozart/Oz 中检查变量元组是否不能被进一步约束

问候,

这个想法最好用一个例子来说明:

假设我们有一个向量vec(a:{FD.int 1#100} b:{FD.int 1#100} c:{FD.int 1#100})。我希望能够向该向量添加约束,直到我添加到它的每个附加约束都不会添加任何更多信息,例如不添加约束vec.avec.b以及vec.c任何进一步的信息。

有可能在莫扎特/奥兹中做到吗?

我愿意这样想。

在一个循环中:

  1. 访问约束存储,
  2. 检查是否改变
  3. 如果没有变化则终止。