> The Mill design has generally been concerned with commercially important languages, and we haven’t put much thought into support for esoterica, which Haskell still is
Fully understandable. But I also suspect that the frame contexts of which there isn’t too much revealed yet, provide everything you need.
> However, the Mill supports label variables and indirect branches, which should provide a satisfactory substitute.
I also expect the pick instruction to be very helpful there.
> The data structure in which there is a pointer to a closure which contains a pointer to an info record which contains a pointer to the code would be very painful on any modern machine
Yes, a lot has changed there. Most common uses of the info structure have been optimized away, in particular via tagging the pointers. And that is something the Mill supports better than any current hardware.
> That is, a closure pointer is the pair
You most likely wouldn’t even need two full 64bit pointers, just two smaller offsets and use the vector instructions to split them. At least in languages with a runtime.
And I’m no expert by far either, so it should be given a rest here.