type a b. type a b -> X. type filter (a -> o) -> list a -> list a -> o. type filter (A -> o) -> list A -> list A -> o. type a (((b))). type d a -> (((b))).