Types ##### Comefrom0x10 has two data types, Unicode strings and numbers. Strings are truly Unicode, that is, you don't need to worry about legacy surrogate pair nonsense giving you a wrong string length. Which would be relevant if Cf0x10 had a way to retrieve string length. Numbers are integers or floating point in the most sensible way possible, so division gives approximately exact answers:: 1/3 # prints 0.333333 Naturally, in this spirit of mathematical correctness, Cf0x10 knows how to handle division by zero:: 0/0 # undefined Undefined ********* The great third datatype, or, perhaps, meta-datatype is ``undefined``. Known in other languages as ``None``, ``Nothing``, ``nil``, ``void`` or, if you're in JavaScript *both* ``null`` and ``undefined``, Cf0x10 adopts the great success of SQL in how it handles the unknown:: undefined is undefined # falsy The example above is misleading however, because ``undefined`` is not a keyword. The program above would be just as easily written:: frobnicate is foobar .. sidebar:: Inspiration JavaScript started this way, and, cowardly, backed down. In Cf0x10, there is nothing special about the name ``undefined``. It is a concept, the absence of value. In the first example, ``undefined`` is just the name of a variable that is... not defined. Thus, this is a perfectly valid program, that prints... nothing:: undefined = 1 'fear nothing' comefrom if undefined is 1 Coercion ******** ============= ========================= ``4 2`` String: "42" ``4 + 2/0`` 4 ``4 + '2'`` Undefined ``'4' + '2'`` Undefined (adding strings is nonsense) ``'4' '2'`` String: "42" ``'4' 2/0`` String: "4" ============= =========================