Created
March 3, 2011 15:06
-
-
Save lanwin/852890 to your computer and use it in GitHub Desktop.
Simply object extension with provides an maybe monad.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class ObjectExtensions | |
{ | |
public static IEnumerable<T> ToMaybe<T>(this T obj) | |
{ | |
return Equals(obj,null) ? Enumerable.Empty<T>() : new[] {obj}; | |
} | |
} |
A slight, but noteworthy difference. I don't know RX, so bare with me. I assumed that RX's Run() is the same as you have used it in your comment - which for me is a simple application like a commonly used ForEach-Extension does.
I wasn't aware of that "do" adds side effects without application. This fact actually is a clear indicator that i yet have a long learning path before me.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
lanwin is right. Since IEnumerable is lazy you need something which starts the process. Foreach() will do so but breaks the monad. Do() is something which stays in the monad and therefor keeps laziness.