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.
I tend to bounce between reading implementations, watching conference presentations, reading papers, reading books, porting implementations, implementing in my main implementation. Feel like all the perspectives help in different ways, but it takes a bit of time!