The simplest use case is where you would like to effect a collection of devices with, for the sake of argument three parameters, let’s say hue, saturation and intensity.
As you argue the global parameter is an option, but an ill such. What if you have 10 different scenarios of said parameters with 2 groups of devices you like to control separately that would need 30 global variables.
There is an option to create 30 flows but that is also a bad solution. My tests indicate that the selections of which flows are to be executed are done by iterating over alla flows and would slow down the Homey considerably.
With the possibility of parameters just two flows are needed and that would. take care of even 1000.000 possible scenarios of hue, saturation and intensity.
I am not after recursion or fast execution, as this can be accomplished today by calling flows without parameters and using a global variable as a bailout.
PS As for the Turing completeness, it is easy as all functional languages are turing complete and functions with parameters would render flows equivalent with recursion. DS
I think that Athom created flows in the hopes of circumventing another of Turings theorems, the stop problem, and opted out of real functions in calling flows from flows. But the point of that theorem is that you can not opt out. You are stuck with the possibility that a program (flow) can execute forever and there is no way to predict or control if a program (flow) is done or not, and that is very bad for an event driven applications that should run for days or even months on ends.