The one-letter variables are all type parameters, and pretty much every programming language uses one-letter variables for type parameters. And I can't think of a better syntax for "functions from a to b" than (a → b). In a Java-ish syntax it'd look like:
interface Functor {
<T, U> Self<U> fmap(Self<T>, Function<T, U>);
}
which is just torture. What would it look like in your ideal syntax?