For anyone reading the code example, please not that “real” Ocaml code is not so ugly. This code looks like it does to be friendly to the REPL. Production Ocaml code does not contain all the ugly ;; and more structured.
Well, the material is made as an interactive session for beginners, w/o having to do a lot of setup and learning before-hand. If you read past the first third, the double-semicolons go away, after toplevel definitions have been presented.
They go away and come back and go away, but their actual meaning isn’t really clear. Also, the let bindings won’t be evaluated in the top level without the semi-colon, which isn’t really clear in the session (from how I read it).
You’re right, it could have been clearer. When I held the presentation originally we talked about it a bit more and sent the let bindings (wo ;;) to utop directly from the Emacs buffer.