Mayve because they aren't guaranteed to be actual functions (in the mathematical sense) and could return random values
The Fn trait could be used, which prevents mutation, but allows a lot of useful closures. I should note, a motivated user could provide a junk function no matter what the type accepted is