HKTs is where you can say that something is "Foldable" and then create functions that work for all foldables and so on. If yes, then I think I want/need that for
Interesting to see your approach! There are quite a few example type checkers out there on Github that do it, but it might be worth cracking open TaPL at some stage.