Hacker News new | ask | show | jobs
by junke 3853 days ago
The static types protect you from undesired runtime behaviors with respect to OCaml's runtime semantics, but what about Javascript's one?

This is better than nothing, sure, because your code is first checked in OCaml but once the code is running, it does it according to Javascript rules.

I imagine there could be subtle bugs introduced during this process (e.g. your OCaml code manipulate integers, but Javascript has numbers, a.k.a. double floats, as far as I know).

3 comments

This is no different than trusting the processor for running the emmited assembly according to the model you have for what assembly is supposed to do.

Here, the compiler emits (a subset of) javascript which are assumed to have a semantics, and we trust the browser engine to execute it according to the semantic.

Of course we don't assume the semantic of javascript to be sane, we just assume it follows the spec (and we emit accordingly).

I see your point, but that's like arguing compiled Haskell code is unsafe, since Haskell has type erasure.

Any code generation machinery is subject to subtle bugs and especially so the flesh and bones kind ;)

I haven't had a single problem at all and I've wrapped even the most sensitive stuff like the event emitter itself and streams.