Blocks in Comefrom0x10 look like functions in other languages and they create scopes like functions, but they are not functions – they do not take parameters or return values. The scope thing aside, block names are analogous to statement labels. Blocks let you use meaningful names instead of line numbers.
Since cf0x10 block names really are just labels that happen to denote scope, you are free to assign a variable of the same name. For example:
foo = 'bar'
foo
comefrom if foo
'I am now in the block called foo.'
'The block should not be confused with the variable ' foo
This variable is often both the signal for jumping into a block and a value the block modifies, as if the block “foo” were returning by assigning to the variable “foo”.
I call this pattern, “All your assignment are belong to us,” or Ayarbtu for short. The standard library block “car” uses it, so you can get the first character of a string like so:
car = "Hello"
car # prints "H"
Here is how you can roll your own Ayarbtu block:
salute
comefrom if salute
salute = "Hello, " salute
comefrom salute if salute
salute = "world"
salute # prints "Hello, world"
Ayarbtu is just a convention, but assignment as return value has precedent – in QBasic, for example – and cooperative assignment is easily done in, say, Java. You might know it as “aspect-oriented” programming.