在关于Oz教程中的函数的章节中,它说:
类似于惰性函数语言Oz允许某些形式的尾递归优化,这些优化在某些严格的函数语言中找不到,包括标准ML,Scheme和并发函数语言Erlang.但是,Oz中的标准函数定义并不是懒惰的.
然后继续显示以下在Oz中尾递归的函数:
fun {Map Xs F}
case Xs
of nil then nil
[] X|Xr then {F X}|{Map Xr F}
end
end
Run Code Online (Sandbox Code Playgroud)
这样做,它将空列表映射到空列表和非空列表,将结果应用于F其头部,然后将其前置于调用Map尾部的结果.在其他语言中,这不是尾递归,因为最后一个操作是prepend,而不是递归调用Map.
所以我的问题是:如果"Oz中的标准函数定义不是懒惰的",那么Oz做什么,像Scheme或Erlang这样的语言不能(或不会?)能够对此函数执行尾递归优化?究竟什么时候函数尾部递归在Oz?
我在 Eclipse 中安装了 PyDev 来运行 Python 程序,但我\xe2\x80\x99m 在导入simplegui. 它向我展示了这个错误:
\n\n\nRun Code Online (Sandbox Code Playgroud)\n\nimport simplegui\n\n
ImportError: 没有命名的模块simplegui
我安装的PyDev版本是2.7.1。
\n