In Haskell, the execution of a compiled program starts with executing main in module Main. This function must be of type IO ().
Which standard or reference defines the above?
Haskell 2010 and Haskell 98 don't define main formally (although there are several examples of functions called main), instead saying:
We leave as implementation dependent the ways in which Haskell programs are to be manipulated, interpreted, compiled, etc.
GHC User's Guide instructs the user to create a main function but never mentions its required type or that it is the start of the program execution. There are references to the Main module but not main function.
Compare C++ (references C11 standard (ISO/IEC 9899:2011) 5.1.2.2.1 Program startup (p: 13)):
Every C program [...] contains the definition [...] of a function called main, which is the designated start of the program.
Which standard or reference says that main is the start of execution of a Haskell program?