Well, it's not very clear to me...
Almost: it returns an anonymous function, which we might call fn so
that we can talk about it, such that fn(s) returns fn(s, "e").
> contains(?, "e") returns a single-argument function which
tests whether a given string contains the letter "e".
Does it generates a function fn(s) which returns s.contains("e") ?
Functional programming seems to be strange...
For most of us, there was a time was programming seemed to be
strange full stop. It takes a little getting used to, but like
object programming, it's incredibly powerful once mastered.