hoopl
hoopl copied to clipboard
Interleaving of multiple passes
There should be a combinator to take an arbitrary list of passes, and interleave them into a single pass where the fact type is a type-level list of other fact types:
interleavePasses :: [forall f. FwdPass m n f] -> FwdPass m n '[]
This seems quite Effective (pun most certainly intended).
Is this really possible without understanding what each pass is doing? It seems it requires each pass be both commutative and associative.