Sostanzialmente, possiamo definire unafunzionecome una serie d'istruzioni contenuta all'interno di due parentesi quadre. Rifacendoci ancora una volta all’esempio precedente, nella funzione che segue possiamo distinguere un nome, un’intestazione, un corpo e una fine:
All’interno di un listato possono essere definite più funzioni, come avviene in questo secondo esempio:
! Esempio sull'utilizzo della funzione print – versione 2
Include "Parser";
Include "VerbLib";
Include "Replace";
[ Stampa1;
ClearScreen(); ! pulisce lo schermo
print "Benvenuto";
Stampa2();
Stampa3();
KeyCharPrimitive(); ! legge un carattere dalla tastiera
];
[ Stampa2;
print " in ";
];
[ Stampa3;
print "Inform!";
];
[ Initialise;
Stampa1();
quit; ! fine del programma
];
Include "ItalianG";
il risultato è sempre lo stesso (la stampa a video della scritta "Benvenuto in Inform!"), ma cambia la modalità d’esecuzione con cui questa stampa avviene[1]. In questo esempio il programma, partendo dalla funzione Initialise, esegue la chiamata alla funzione Stampa1 stampando a video la parola "Benvenuto"; segue poi la chiamata alla funzione Stampa2 (che stampa a video la parola "in" con tanto di spazi), il ritorno alla funzione Stampa, la chiamata alla funzione Stampa3 (che stampa a video la parola "Inform!"), il ritorno alla funzione Stampa, la lettura del carattere dalla tastiera e l’uscita dal programma.
Possiamo quindi affermare che tutti i programmi in Inform partono dalla funzione Initialise.