I see. The language spec explicitly talks about the machine. That's not nothing.
In practice, though, when I have some piece of memory-mapped hardware attached, and I want to talk to it, in C I can say:
*(uint32_t*)0xF00BA4 = 0x0102ABCD;
or whatever I need to flip the bits. C lets me actually
control the whole machine. Whereas Haskell... I don't know, but I suspect it lets me actually
use the physical machine a lot less.