On Mon, Jun 22, 2015 at 11:48:21AM -0400, Damien Doligez wrote: > Gerd has totally nailed it, and that's the reason why I always use ;; > in my code. > If we had another keyword for toplevel let (let without in) the > situation would be quite different. I have a rule (which I introduced recently, and thus don't yet follow much in my code) to use ;; to terminate all unit-returning (therefore effectful) functions. Pure functions or effectful functions with a proper return value never have the trailing-semicolon issue. An alternative solution is to always return () from unit-returning functions, but I found ;; more appealing.