Lokális függvények és blokkstruktúra
Általában a függvények a Mirandában globális hatáskörűek. Ez azt jelenti, hogy a függvény alkalmazható a programleírás bármely
kifejezésében. De lehetőség van lokális hatáskörű függvények definiálására is a
where klóz segítségével. Így a lokális
függvény egy kisebb blokkban lesz definiálva, és ezen a blokkon kívül a függvény nem látható.
A legtöbb programozási nyelvben egy blokk kezdetét és végét speciális kulcsszavak vagy zárójelek jelzik. A Mirandában a blokkot
az elhelyezkedése hozza létre: a blokk azokból a kifejezésekből és definíciókból áll (valamely függvénydefiníció vagy where
klóz belsejében), melyek közvetlenül az egyenlőség jel, vagy az attól jobbra lévő szimbólum alatt helyezkednek el. Azt a
szimbólumot, mely a definícióban a blokkon kívül helyezkedik el
offside szimbólumnak hívjuk.
Egy
where klóz definíciókat tartalmazhat, és egész szövegének beljebb kell lennie a környezeténél, hogy látszódjon
hogy ez a jobboldal része. A where klózok egymásba ágyazhatóak tetszőleges mélységig, lehetővé téve, hogy a Miranda program
egymásba ágyazott blokkstruktúrával legyen felépítve. A offside szabály határozza meg e beágyazás hatáskörét, a szövegszerű
bentebb kezdés mértéke által.
globális_függvény a1 ... an = kifejezés1
globális_függvény b1 ... bn = kifejezés2
                              where lokális_függvény1 c1 ... cm =kifejezés3
                                    lokális_függvény2 d1 ... ds =kifejezés4
A lokális definíciók szintaxisa teljesen azonos a felső szinten lévőekkel, attól eltekintve, hogy típust specifikálni csak a
legfelső szinten lehet.
Például lássuk a másodfokú egyenletek megoldóképletét (mely vagy visszaad egy vagy két valós gyököt, vagy hibát jelez):
quadsolve a b c = error "complex roots", if delta<0
= [-b/(2*a)], if delta=0
= [-b/(2*a)] + radix/(2*a),
= [-b/(2*a) - radix/(2*a)], if delta>0
  where delta = b*b - 4*a*c
         radix = sq delta