What is f here?

anything Applicative:

Prelude> let a1 = pure 1
Prelude> let a2 = pure 1

Prelude> (a1::Maybe Int) == a2
True
Prelude> (a1::Maybe Float) == a2
True
Prelude> (a1::Either String Float) == a2
True