У Миранды нет циклов 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)