Return: t -> M t
Fail: M t
Bind: (t1 -> M t2) -> M t1 -> M t2