Tengo un número de módulos de "biblioteca" en OCaml (principalmente funciones de utilidad y auxiliar) donde agregué el siguiente tipo de código al final para pruebas de unidades triviales:múltiples "líneas principales" en módulos OCaml vinculados
let main() = ...
main
o
let() = ...
Este código ser que principalmente se imprime en la consola (para propósitos de prueba simples). El problema ahora es que cuando enlace mis módulos de "biblioteca" con mi módulo "principal" y ejecuto el programa, recibo todos estos mensajes de prueba que me distraen. ¿Hay alguna manera de incluir código en un módulo OCaml que se ejecuta cuando el módulo está vinculado solo (lo que facilita las pruebas triviales) pero no cuando se usa como una "biblioteca"? He leído publicaciones en SO en el sentido de que OCaml no tiene ninguna noción de un módulo "principal" y que todos los módulos son iguales, sin embargo, me parece que el orden de los archivos objeto entregados al enlazador podría interpretarse como indicador de que el el último módulo es el "principal" (ya que está en la parte superior de la "cadena alimentaria de dependencia").
En C tienes razón, necesitarías usar una interfaz de prueba, pero en Java es una práctica común para cada clase no trivial tener un main() haciendo algún tipo de "prueba" superficial: cuando te mueves a un marco de prueba que ese tipo de código se limpia y no tiene otro propósito, pero durante el desarrollo activo inicial esta instalación tiene su uso. Me doy cuenta de que en OCaml tienes el toplevel, pero no es lo mismo. –
comment: see addéndum – lambdapower