Felix Dilke put in a request for fixed points of an endofunction, or a 3-coloring of an endofunction such that x and f(x) do not have the same color.
fixedPoints :: (a->a) -> [a] -> [a]
threeColoring :: (a->a) -> [a] -> [ [a],[a],[a]]
threeColoring f set
| (length $ fixedPoints f set) == 0 = []
| otherwise = -- split into connected components. 3 color cycles, greedy color tree branches