Automatic loops
Jump to navigation
Jump to search
This page discusses the possibility or getting rid of the awkward controlflow-style looping. We could allow modules to automatically loop if a module's port gets a list of values (or multiple connections).
typed lists?
- list shouldn't be a type like any other
- allow connection List<T> -> T
- allow connection T -> List<T> (make a one-element list, or actual list if the module loops)
- RR proposes: don't duplicate modules to loop, just make update() call compute() several times
- probably needs the dont-use-modules-as-data work -- modules that return themselves are going to break
- add logic in vistrails_module:Module:
if inputport T and input list<T>, call compute several times and build list of outputs
- coupling problem
def test_module(a:T, b:T) -> (c:T, d:T):
- c = a*b
- d = a+b
- test_module([1, 2], [3, 4])
- is it c = [3, 8], d = [4, 6]? (pairwise)
- is it c = [3, 4, 6, 8], d = [4, 5, 5, 6]? (cartesian)
- can probably be settable in module conf (and default to pairwise)