Function object
In Ruby, several objects can be considered function objects, in particular Method and Proc objects. Ruby also has two kinds of objects that can be thought of as semi-function objects: UnboundMethod and block. UnboundMethods must first be bound to an object (thus becoming a Method) before they can be used as a function object. Blocks can be called like function objects, but to be used in any other capacity as an object (e.g. passed as an argument) they must first be converted to a Proc. More recently, symbols (accessed via the literal unary indicator codice_35) can also be converted to codice_36s. Using Ruby's unary codice_37 operator—equivalent to calling codice_38 on an object, and assuming that method exists—the Ruby Extensions Project created a simple hack.
Equals sign
In Ruby, equality under codice_12 requires both operands to be of identical type, e.g. codice_9 is false. The codice_8 operator is flexible and may be defined arbitrarily for any given type. For example, a value of type codice_21 is a range of integers, such as codice_22. codice_23 is false, since the types are different (Range vs. Integer); however codice_24 is true, since codice_8 on codice_21 values means "inclusion in the range". Note that under these semantics, codice_8 is non-symmetric; e.g. codice_28 is false, since it is interpreted to mean codice_29 rather than codice_30.