T3330a.hs:17:34: Couldn't match type `s' with `(->) (s ix1 -> ix1)' `s' is a rigid type variable bound by the type signature for children :: s ix -> PF s r ix -> [AnyF s] at T3330a.hs:17:1 In the first argument of `hmapM', namely `p' In the first argument of `execWriter', namely `(hmapM p collect x)' In the expression: execWriter (hmapM p collect x)