Ho un numero di moduli "libreria" in OCaml (principalmente funzioni di utilità e di supporto) dove ho aggiunto il seguente tipo di codice alla fine per test unitari banali:più "rete" nei moduli OCaml collegati
let main() = ...
main
o
let() = ...
Questo codice essere che principalmente stampe alla console (per scopi di test semplici). Il problema ora è che quando collego i miei moduli "library" con il mio modulo "principale" ed eseguo il programma ottengo tutti questi messaggi di test che distraggono. C'è un modo per includere il codice in un modulo OCaml che viene eseguito quando il modulo è collegato da solo (facilitando così i test banali) ma non quando viene usato come una "libreria"? Ho letto post in SO per l'effetto che OCaml non ha la nozione di un modulo "principale" e che tutti i moduli sono uguali tuttavia mi sembra che l'ordine dei file oggetto dati al linker possa essere interpretato per indicare che il l'ultimo modulo è quello "principale" (poiché è in cima alla "catena alimentare di dipendenza").
In C hai ragione, avresti bisogno di usare un frontend di testing ma in Java è una pratica comune per ogni classe non banale avere un main() facendo una sorta di "testing" di tipo "corsivo" - quando ti sposti una struttura di test che tipo di codice viene ripulito e non serve a nessuno scopo ma durante lo sviluppo attivo iniziale questa struttura ha il suo uso. Mi rendo conto che in OCaml hai il livello più alto ma non è la stessa cosa. –
commento: vedi addendum – lambdapower