[generic function] object-apply obj arg ...

Gauche: When an expression (obj arg ...) is evaluated and obj is not a built-in funcallable object (a procedure or a generic function), Gauche invokes this generic function instead. The default method is to signal an error ("invalid application"), but any objects can be made "funcallable" by defining specialized method.

gosh> (define-method object-apply ((s <string>) (i <integer>)) (string-ref s i))
#<generic object-apply (7)>
gosh> ("abc" 1)