私は関数型でPythonを書いています(私が得ているのはモナドに似ていると思いますか?)。これが私がこれまでに持っているもので、3つの関数のためにハードコーディングされています。10または100があった場合はどうなりますか?
# a list of (function, function, function), each of which accept
# a scalar and return a list
funcs = [(lambda a: [a, a], lambda a: [a, a, a], lambda a: [a])] * 10
possible = []
car = 3
for a, b, c in funcs:
ra = a(car)
if ra:
rb = b(ra[0])
if rb:
rc = c(rb[0])
if rc: # last function
possible.extend(rc)