我用函数式的风格编写Python(我想我得到的是类似于monad的东西?)。这是到目前为止,我有三个函数的硬编码。如果我有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)
也许是这样的:
那是非常独居的。在
您可能想要做的是使用monad的
bind
函数运行一个fold(在本例中使用Maybe或one monad),尽管您的单个函数必须返回一个单体值(即,要由monad的特定值构造函数包装的原始函数返回的列表值)。在您的结束调用如下所示(混合使用Haskell和Python):
(你会想要也许吧。绑定可能是因为python不像Haskell那样做部分应用程序,所以我只是在偷懒。)
这里有一个python monad library/script让你开始。在
相关问题 更多 >
编程相关推荐