Is Sapphire a strongly typed language?
No. Sapphire variables may take on any type and a single variable may be assigned different object types (no coercion required!) – just as in Ruby. Type declarations are neither necessary nor are they enforced. Type assertions are optional. They give the programmer the ability to assert that, at critical points in a program, a certain variable is expected to have a specific type or fall within a specific range of values. Method return values may be asserted in a similar way. Type assertions facilitate incremental testing to verify the correctness of a Sapphire program. They do not cause a variable to be instantiated to the asserted type.