An example is worth 1000 words:
import oslash
def operation_that_succeeds(input):
return oslash.Right(input + 1)
def operation_that_fails(input):
return oslash.Left("Failure")
def lift(m):
def w(f):
return lambda x: m.unit(f(x))
return w
@lift(oslash.Right)
def pure_function(input):
return input + 1
if __name__ == "__main__":
print(operation_that_succeeds(45) | operation_that_succeeds | pure_function | operation_that_succeeds)
How can I rewrite this without needing to implement the lift decorator?