Próbuję zaimplementować Monadę Może w python. Jednak to, czego chcę, to rodzaj zdolności do sklejania.Może monada w Pythonie z metodą łańcuchową
Więc mam klasy:
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)
Mam dwie funkcje:
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)
Oto jak używam to:
result = Maybe(5).do(double).do(square)
print(result.val)
ja patrząc na sposób na łańcuchowanie wielu funkcji przy wykonywaniu określonego zadania. Każda funkcja pobiera dane wyjściowe poprzedniej funkcji jako dane wejściowe. Łańcuch powinien się zepsuć, jeśli jakakolwiek funkcja w łańcuchu zgłasza wyjątek.
Czy to właściwy sposób na model Monady Być może?
Czy to również właściwy sposób obsługi wyjątków?
Czy można to poprawić?
Wielkie dzięki.
Co to jest 'Może' ?? – ForceBru
To jest lepsze przy sprawdzaniu kodu, ponieważ nie próbujesz rozwiązać konkretnego problemu i chcesz tylko trochę komentarzy na temat twojego kodu. – OMGtechy
Nie, to nie jest lepiej, ponieważ kod również nie działa: D –