:: (a -> a) -> [a] -> [[a]] package:speculate