This operator invokes any number of operations on any number of arbitrary attributes over any geometry/element/number or no input at all, in a feedback or merge gather style.
In computer programming, lambda function is an anonymous function (function literal, lambda abstraction, or lambda expression) is a function definition that is not bound to an identifier. Anonymous functions are often arguments being passed to higher-order functions, or used for constructing the result of a higher-order function that needs to return a function. Anonymous functions are ubiquitous in functional programming languages and other languages with first-class functions, where they fulfil the same role for the function type as literals do for other data types.
In Houdini this is effectively the same as having anonymous HDAs (Houdini Digital Assets).
The lambda function can be run using a fixed number of iterations, or piecewise by looping over pieces as defined by points/primitives, or by a point/primitive attribute where the same attribute values are considered part of the same piece. The results can be gathered in a feedback loop or a merge loop.
Another loop can also be run inside the main loop to allow you to loop over a list of attributes and index them into another attribute. This allows you to read from an attribute, write it into the index attribute, apply the lambda function, and then write the results back to the original attribute, for each attribute being looped over.
This allows any operator that work on hard coded attributes, i.e. the Bend SOP that only works on P, to work on other attributes. So you can apply the same operations to P, rest, rest2, etc at once.
Finally the entire execution can be multithreaded (default).
NOTE: The lambda function subnet needs to be fully compilable for this operator to work.
https://www.dropbox.com/s/alq8kn31j6m0hr7/Lambda_SOP_Animatrix.otl?dl=1
https://www.dropbox.com/s/qxezpx5hr1vapj5/lambda.hip?dl=1