2011-10-08 30 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等氣餒。你需要通過遞歸進行迭代。