如何解决正确执行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 举报,一经查实,本站将立刻删除。