5. Control Flow Tools¶
Pythonect supports standard control flow tools, but with a twist!
5.1. Using Boolean Values as if Statement¶
There’s no if keyword in Pythonect, instead, boolean values are used to
determine whether to terminate or continue the flow.
5.1.1. True as Pass-through¶
Whenever a Python expression or function returns True the current
value in the flow is pushed to the next operation. For example:
1 -> [_ < 2] -> print
Will print 1, because the expression is evaluated to True (i.e. 1 <
2). Another example:
"Hello, world" -> _.startswith('Hello') -> print
Will print "Hello, world" because startswith method returned True
(i.e. “Hello, world” string starts with “Hello” string).
5.1.2. False as Terminator¶
Whenever a Python expression or function returns False the current
flow terminates and returns False. For example:
"Hello, world" -> _.startswith('ello') -> print
This will not print anything and return False.
5.1.3. Using Multithreading as elif and else¶
Since there’s no if, there’s also no elif or else, instead all
possible flows are evaulated at once. For example:
"Hello, world" -> [[_.startswith('Hello') -> print "1"], [[_ != 'foobar'] -> print "2" ]]
Graphically (Visual programming wise), represented as:
Both versions will print (each in its own thread, and not necessarily in that
order): 1 and 2.
5.2. Using Iterable Object as for Statement¶
There’s no for keyword, instead, every Iterable object is treated as a
for-loop. For example:
[1,2,3] -> print
And
(1,2,3) -> print
Both, Graphically (Visual programming wise) represented as:
Will print 1, 2, and 3 (not necessarily in that
order). The same applies to generator functions (i.e. yield) and Python
classes that implement __iter__() method.
The only exception are strings. Pythonect does not iterate Python strings by default. To iterate a string in Pythonect, use Python’s built-in iter() function as follows:
iter("abc") -> print
The code above will print the letters: a, b, and c (not
necessarily in that order).
5.3. Using Dictionary as switch Statement¶
There’s no switch keyword in Pythonect, instead, every literal dict
can be used as a switch-like mechanism (without fallthrough). For example:
1 -> {1: 'One', 2: 'Two'} -> print
Will print One. While:
3 -> {1: 'One', 2: 'Two'} -> print
Will will not print and return False