Modul
A fő érv a modulokra bontás mellett a típus és a hozzá tartozó műveletek elkülönítése, ill. az implementáció elrejtése. Ezenfelül
természetesen a modularitás áttekinthetőbbé teszi a programot, és támogatja az újrafelhasználhatóságot. Funkcionális esetben
a típus megvalósítására és főleg elrejtésére az absztrakt adattípus elegendő, és jó lehetőséget biztosít. Így az a lehetőség,
hogy a típust egy külön file-ba tegyük, csak az olvashatóságot és az újrafelhasználhatóságot javítja. A funkcionális nyelvekben
a lokális függvény definíciók, a típusműveletek elrejthetősége (az absztrakt típus), valamint a könyvtárdirektívák az eszközei
a modulok elkülönítésének.
Három direktíva (
%include,
%export,
%free) alkotja a Miranda könyvtár kezelését, ezek szabályozzák az
azonosítók szétosztását a külön-külön fordított leírások közt.
%include "file"
A
%include direktíva hatására alapértelmezésben a "file" nevű leírásból a legfelső szinten definiált összes név exportálódik,
kivéve azok, melyek egy %include direktíva által kerültek oda. Tehát az a file, amit %include-oltunk szintén tartalmazhat
%include direktívát, tetszőleges mélységig, de a (direkt, vagy indirekt) %include direktíva körök nem engedélyezettek.
%export "tagok"
Az
%export direktíva segítségével lehet változtatni a %include hatáskörét. Az %export direktívának nincs hatása a
leírásra, ha az az aktuális Miranda leírásban található, csak akkor, ha ezt a leírást %include-olják. Egy leírás legfeljebb
egy %export direktívát tartalmazhat, amely bárhol elhelyezkedhet a leírásban, de a kellemetlen meglepetések elkerülése végett
ajánlatos a leírás elejére tenni. Minden "tag" a következők valamelyike kell hogy legyen:
  azonosító (változó vagy típus név)
  file azonosító
  <- szimbólum
  -azonosító
Ha file azonosító szerepel a %export listában, akkor annak egy olyan file nevének kell lennie, mely egy %include direktíva
által került az adott leírásba. A <- szimbólum egy rövidítése az aktuális leírás legfelső szintjén definiált összes azonosítónak.
Az alapértelmezése ennek a direktívának: %export <-. A -azonosító jelöléssel lehet meghatározni, hogy mely elemek ne kerüljenek
bele a listába.
%free
Lehetőség van olyan definíciókat tartalmazó leírás készítésére, mely olyan információktól függ, melyek csak akkor fognak
betöltődni, amikor a leírás egy %include direktíva tárgyát képezi. Ezt nevezik paraméterezett leírásnak. Ezt a
%free (felsorolás) direktíva jelenléte váltja ki, ahol a "felsorolás" azon azonosítók listája, melyek a %include direktívától
függnek. A leírás legfeljebb egy %free direktívát tartalmazhat, melynek fel kell sorolnia az összes paraméterező azonosítót.
Például szeretnénk mátrix-algebrát megvalósító csomagot írni anelkül, hogy tudnánk, milyen típusú elemei lesznek a mátrixoknak. Egy ilyen
csomag fejléce a következőképpen nézhetne ki:
%free { element:: type
        zero, unit:: element
        mult, add, subtract, divide:: element->element
      }
%export matmult determinant eigenvalues eigenvectors ...
|| itt következne a matmult, determinant, eigenvalues stb.
|| definíciója a zero, unit, mult, add, subtract, divide
|| szabad változókat tartalmazó kifejezésekként
A csomagot használó script-ben a megfelelő %include direktívának megkötéseket kell adnia a csomagban szereplő szabad változókra. Itt egy példánya a fent
vázolt mátrix csomagnak, valós számokat választva mátrixelemeknek:
%include "matrix_pack"
         { element == num; zero = 0; unit = 1
           mult = *; add = +; subtract = -; divide = /
         }
A Miranda három direktívája az
%include, az
%export és a
%free rugalmas és típusbiztos mechanizmust kínál a programozók számára, hogy nagyobb lélegzetű
programjaikat kisebb komponensekből építhessék fel.
A különálló fordítások felhasználói beavatkozás nélkül mennek végbe. Minden Miranda script-et tartalmazó file-hoz tartozik egy
object code file, melyet a
rendszer hoz létre. Ezek a file-ok minden esetben újrafordítódnak és újralinkelődnek ha elavulttá válnak a hozzá tartozó forráshoz képest, azaz ha bármi
változást eszközölünk a forrásában. Ez a viselkedés erősen analóg az UNIX-ból ismert
make működésével, azt leszámítva, hogy ez esetben nincs szükség a
felhasználó által írt makefile-ra, a szükséges függőségi információkat a Miranda forrás %include direktíváiból nyeri ki a fordító.