I was hoping isFunction might be a “protocol identifier”, but alas only Function itself and its subclasses make it true. BinaryOpFunction.isFunction is false for instance. There are no actual uses for isFunction in the class library… but I found the need myself to treat BinaryOpFunction as “the same”, meaning I need to call value on it to “resolve” it, i.e.
f = {42}
g = f + 3
f.value // 42
g.value // 45
g.isFunction // -> false
Of course it is trivial to do
g.isKindOf(AbstractFunction) // -> true
instead, but I was wondering what the meaning of isFunction is actually supposed to be.