Variables ********* Comefrom0x10 has variables just like most other languages. It uses duck-typing, because ducks are delicious, when prepared just so, with a nice crispy skin, and does away with pesky declaration nonsense. Just assign to a variable to create it:: greeting = 'Hello' Strictly speaking, assignment doesn't create the variable. As with "hoisting" in JavaScript, names are in scope throughout the block. Before assignment, the name ``greeting`` exists, but with the value ``undefined``. In fact, it's even simpler than that. It (usually) doesn't matter whether a name is in scope. A Cf0x10 design principle is that your programs should never have fatal runtime errors, thus Cf0x10 programs, like shell scripts, are extremely robust against crashes. You are free to refer to a name that's never assigned at all, if you wish, so this is a complete and valid Cf0x10 program, that just prints nothing at all:: greeting Whereas, this program prints "Hello":: greeting = 'Hello' greeting See :doc:`../reference/types` in the documentation for specifics. Later in this tutorial, we will see that assignment is closely related to control flow.