正确执行func for Functors?

问题描述

因此,最近我一直在尝试围绕Functors,Applicatives和Monads进行思考。以我的理解,这种设计模式允许将“纯功能”与“不纯”功能区分开,并确保没有分支并从给定功能调用不同功能并引起副作用。 >

所以,假设我有一本字典,想在其上应用/编写一些功能。

input = {"x": 2,"y": 5,"out": None}

def f(x):
    return x + 2

def g(y):
    return y - 3

def h(x,y):
    return x * y

class Functor:

    def __init__(self,input):
        self.input = input

    def fmap(self,function):
        val = self.input
        if function.__name__ == "f":
            val["x"] = function(val["x"])
        elif function.__name__ == "g":
            val["y"] = function(val["y"])
        elif function.__name__ == "h":
            val["out"] = function(val["x"],val["y"])
        elif function.__name__ == "print":
            function(val)
        else:
            print("fmap not defined for this function!")
        return Functor(val)

    def __rshift__(self,function):
        return self.fmap(function)

Functor(input) >> f >> g >> h >> print #results in {"x": 4,"y": 2,"out": 8}
Functor(input) >> h >> g >> h >> print #results in {"x": 2,"out": 4}
Functor(input) >> g >> f >> h >> print #results in {"x": 4,"out": 8}

那么,我对函子的理解正确吗?如果是,这是实现 fmap 的方式,还是围绕每个函数创建包装器以在相应包装器中定义 fmap ? 而且,这是跟踪输入状态,功能发布后应用程序的方法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...