2011-10-08 48 views

回答

3

米兰达没有while或for循环(无论如何都不会有多大意义)。在大多数情况下,您可以改用高阶函数。如果没有更高阶的函数来满足你的需要,你可以使用递归。

例如,如果您有以下while循环的命令式语言:

f(start) { 
    x = start 
    while(!finished(x)) { 
     x = next(x) 
    } 
    return x 
} 

你会递归地表达它米兰达这样的:

f x = if finished x then x else f (next x) 
2

在米兰达(和一般的,在纯函数式编程语言)使用循环结构像的同时,FOR等气馁。你需要通过递归进行迭代。