【发布时间】:2013-07-25 18:38:43
【问题描述】:
我试图理解 也许 Monad 但我看到的大多数示例都使用了一些特定于语言的功能。为了确保我在概念上理解它是正确的,我想编写一个通用实现。下面是我想出的。
有人可以告诉我在概念上是否正确吗?有没有更好的方法来概括它?
def f():
return 2
def g():
return 4
def h():
return 7
def i():
return None
def bind(val, func):
if val is None:
return None
else:
return(func())
unit = 0
>>> bind(bind(bind(unit,f),i),h) #Returns nothing
>>> bind(bind(bind(unit,f),g),h) #Returns a value
>>>7
如果我想从这些函数中添加值并在其中任何一个为 NULL 时中止;有什么建议吗?
【问题讨论】:
-
@Joehillen 这根本不是真的。 Monad 在动态类型语言中确实非常有用。
-
@Matt Fenwick 怎么样?没有任何类型。你在 monad 中包装了什么?
-
@Joehillen:动态类型语言确实有类型。你认为
type函数有什么作用? -
@Joehillen 动态/静态类型和强/弱类型相互独立。你可以拥有一个强类型和动态类型的语言; Python 和 Ruby 都是很好的例子。