4. Variables¶
4.1. Assignment Statement¶
Pythonect supports standard Python types, but with a twist!
4.1.1. Variable <slug> in Single Thread¶
You can define a variable and set its value as follows:
[x = 0] -> x -> print
Graphically (Visual programming wise), this is represented as:
Both versions print 0. You can also change its value during the
program runtime as follows:
[x = 0] -> x -> print -> [x = 1] -> x -> print
This will print 0 and 1, in this order, and in the same
thread. Of course you can assign and re-assign any legal Python value, for
example:
[x = 0] -> x -> print -> [x = "Hello, world"] -> x -> print
Will print 0, and "Hello, world"
4.1.2. Variable <slug> in Multithreading¶
You can define a variable and set it with multiple values at the same time
(each value map()‘ed to a different thread) as follows:
[x = 0, x = 1, x = 2] -> x -> print
Graphically (Visual programming wise), this is represented as:
Both versions will print, each in its own thread, and not necessarily in that
order: 0, 1, 2.
Of course you can assign any combinations of Python value and types, for example:
[x = 1, x = 1, x = 0.34, x = "Hello, world"] -> x -> print
This will print, each in its own thread, and not necessarily in that order:
1, 1, 0.34, and "Hello world".
4.2. Predefined Variables¶
Pythonect predefines two variables: _ and _!
4.2.1. _ as Current Value¶
The variable underscore (i.e. _) is predefined to be the current value on
the flow, for example:
1 -> _ + 1 -> print
Will print 2. As _ will be equal 1 after evaluating the
1 expression. Another example is:
["To be", "Not to be"] -> print "To be, or not to be? " + _
This will print, each in its own thread, and not necessarily in that order:
To be, or not to be? To be and To be, or not to be? Not to be
4.2.2. _! as All Current Values¶
The variable underscore question mark (i.e. _!) is predefined to be the
list of all the current values in the program (i.e. reduce()‘ed), for
example:
[1,2,3] -> sum(_!) -> print
Graphically (Visual programming wise), this is represented as:
Both versions will print 6. Notice how sum became a reduce-like
function, when it accepted a list of 1, 2, 3 and
returned 6. Another example:
"Hello, world" -> reversed -> reduce(lambda x,y: x+y, _!) -> print
This will print "dlrow ,olleH" (i.e. "Hello, world" reversed)