However in C++ it happens all too easily that seemingly innocuous changes launched a cascade of massive re-compiles (which ultimately impacted “binary compatibility” as well) - unless one was hyper-vigilant about using compilation firewalls (pImpl idiom) everywhere (i.e. more mental tax) - which all too often wasn’t the case if the code authors were of the “C++ as a better C” persuasion. The lack of compilation firewalls could also make it extremely difficult to put legacy code under unit test.
I like the way module Three
didn’t have to declare it’s X_int
-ness. Though for int_bumper
and float_bumper
it looks like a cast is going on. Certainly seems like OCaml’s module system has a bit of a different way of doing things.
Have you come across Jon Harrop’s opinion regarding Reason
? Yikes.