Oz中List模块的使用方法

How to use the module List in Oz

我在 Oz 中找到了有关包含对列表进行操作的过程的模块的信息:https://mozart.github.io/mozart-v1/doc-1.4.0/base/list.html

但是我一直在以不同的方式尝试不同的程序,例如:

declare
proc {Length L}
   I
in
   {List.length +L ?I}
   {Browse I}
end

declare
L=[1 2 3 4]
in
{Length L}

我得到的是一个类型错误,我希望你能帮助我知道为什么,我是使用 OZ 的新手

问题出在您传递给 List.length 的参数中。您不应使用“+”符号。它是加法运算符。只需调用

{List.length L ?I}

文档中使用“+”符号来说明参数的用途。 '+' 符号表示输入参数,而 '?'表示输出参数。

此外,您可以使用'?'为了清楚起见,在您的代码中,Oz 支持它。

此外,List 模块应该默认导入。所以你不必定义一个使用List.length的函数Length,你可以简单地使用

{Browse {Length [1 2 3 4 5]}}

浏览作为参数给出的列表的长度。