【发布时间】:2015-04-20 20:58:24
【问题描述】:
我正在尝试在 python 中实现 Maybe monad。 但是,我还想要某种链接能力。
所以我有课:
class Maybe:
def __init__(self, val):
self.val = val
def do(self, func): # Bind function
if self.val is None:
return None
else:
return func(self.val)
我有两个功能:
def double(number):
try:
result = number * 2
return Maybe(result)
except:
return Maybe(None)
def square(number):
try:
result = number * number
return Maybe(result)
except:
return Maybe(None)
这是我的使用方法:
result = Maybe(5).do(double).do(square)
print(result.val)
我正在寻找一种方法来链接多个功能,每个功能都执行特定的任务。每个函数都将前一个函数的输出作为输入。如果链中的任何函数抛出异常,则链应该中断。
这是对 Maybe monad 建模的正确方法吗?
这也是处理异常的正确方法吗?
这个可以改进吗?
非常感谢。
【问题讨论】:
-
这在代码审查方面会更好,因为您不是在尝试解决特定问题,而只是想在代码中添加一些 cmets。
-
不,这不是更好,因为代码也不起作用:D
-
我认为这是上下文:Maybe monad
-
Maybe(0).do(double)
标签: python exception-handling monads method-chaining maybe