In case anyone is listening,
makeDualDec
[d| cata :: Functor f => (f a -> a) -> Fix f -> a
cata f = f . fmap (cata f) . unfix |]
"ana"
does the right thing now, which is sort of my base level βit works!β As @parsonsmatt has pointed out, plenty of things are still wrong, but hey, Iβm not presenting this to anyone for like 2.5 more weeks, so plenty of time for me to figure out everything there is about duality, right?