我正在尝试使用以下代码在Oz中创建一个列表:
local Loop10 Xs in
proc {Loop10 I}
Xs={List.append Xs I}
if I == 10 then skip
else
{Browse I}
{Loop10 I+1}
end
{Browse Xs}
end
{Loop10 0}
endMozart compiler显示代码已被接受,但没有打开浏览窗口。我想做的就是在Oz中创建一个列表。
代码有什么问题?
发布于 2009-09-26 21:50:05
我不确定这是否是您想要的,但是要创建一个包含X和Y(包括X和Y)之间的所有整数的列表,您可以这样做:
local
fun {Loop From To}
if From > To
then nil
else From | {Loop From+1 To}
end
end
in
{Browse {Loop 0 10}} % Displays: [0,1,2,3,4,5,6,7,8,9,10]
end发布于 2010-01-02 01:29:58
另外,您没有获得任何浏览器窗口的原因是由于下面这行代码导致评估线程挂起:
Xs={List.append Xs I}正如前面提到的,一个变量只能赋值一次,但这一行还存在其他问题。您尝试将Xs附加到i,但Xs仍未绑定。线程因此挂起,直到为Xs分配了一个值。
以交互方式输入以下内容:
declare Xs in
{Browse {List.append Xs [2 3 4]}}正如您看到的没有发生任何事情一样,浏览器也不会打开。现在输入以下内容:
Xs= [1]由于Xs被绑定,它将解锁第一个求值“线程”,浏览器将弹出。
另外,很抱歉回答得太晚了,我只是对Oz感兴趣。
https://stackoverflow.com/questions/1463464
复制相似问题