Author here. I've been working on Fo part time for 4 months. Feel free to ask me anything.
What does the implementation look like under the hood? What are the limitations of your approach (i.e. generic interfaces) and are they fundamental or just on the todo list?
https://github.com/albrow/fo/compare/faf3c9f96a8ecd9d17ca968...
https://github.com/albrow/fo/compare/f76c531f839e5e76e5f6b7f...