Modelleket egyszerű szöveges állományokban definiálhatunk, .fab kiterjesztésekkel.
Modelleket a következő formában definiálhatunk:
Az egyes modellekben definiálhatjuk saját eljárásainkat, függvényeinket, az ütemezéseket, az ágenseket reprezentáló osztályokat. Ezeket mind a fent jelzett kulcsszavak között tehetjük meg.
A függvények olyan kódrészletek, amelyek a program bármely részéből hivatkozhatóak. A függvényekkel írhatjuk le a modell ill. a modell és az ágensek közötti relációkat. A függvényeket Curry-formában lehet megadni, azonban a paraméter lehet egy rendezett n-es (tupple) is, így tetszőleges számú paramétert meg lehet adni.
A függvénydefiníciók általános formája a következő:
Példák:
A paramétereket egy vesszővel ellátott listában írhatjuk le. Ha nincs egyetlen paraméter sem, akkor a függvény zárójeleit sem kötelező kirakni.
Példák:
A definíciók alapján bevezetett nevek elsődleges függvénydefinícióknak minősülnek – Fables-ben a függvények felsőbb osztályú elemek.
Minden egyes függvénydefiníció rendelkezhet lokális definíciókkal (tetszőleges mélységben), amelyek csak az adott függvényre vonatkoznak.
A lokális definíciókat a függvény definíciója után írt where kulcsszóval definiálhatunk egy zárójelben, egymástól vesszővel elválasztva. Az általános formája a következő:
Példa:
A lokális definíciók azonban rövidítésekre is használhatók, például:
Kidolgozásra vár.
Kidolgozásra vár.
Rekurzió különösebb megkötés nélkül megengedett. Egy komolyabb példa a Fibonacci-számok előállítására: