Я пытаюсь понять, возможно, 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; любое предложение?