小编laz*_*hon的帖子

也许Python中的monad与方法链接

我正在尝试在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)
Run Code Online (Sandbox Code Playgroud)

我有两个功能:

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)
Run Code Online (Sandbox Code Playgroud)

这是我如何使用它:

 result = Maybe(5).do(double).do(square)
    print(result.val)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种链接多个函数的方法,每个函数执行一个特定的任务.每个函数都将前一个函数的输出作为输入.如果链中的任何函数抛出异常,链应该断开.

这是对Maybe monad进行建模的正确方法吗?

这是处理异常的正确方法吗?

这可以改进吗?

非常感谢.

python monads exception-handling method-chaining maybe

6
推荐指数
2
解决办法
1248
查看次数