I'm not sure what exactly you are asking here, but I will give him a chance. Explain the question.
Equivalent in C # on ifwithout elsein a monadic workflow:
from a in b
where c(a)
select a
Logically, this is equivalent (using your Bind, Return, and Zero)
Bind(b, a => c(a) ? Return(a) : Zero)
# where SelectMany ( , # Bind). # Where
Where(M<T>, Func<T, bool>)
: # ; Select, SelectMany, Where .. . . , "" , : , , , - .
"Where" . [a, b, c] b, , [[a], [], [c]]. , , . , .
# , : monad yield , comonad await .. , , Haskell.
?