Mark Cidade

101
reputation
3

http://www.marxidad.com/Aboutme

I first learned BASIC at age 11 on a Commodore 64.

Former SDET, ADO.NET Team @ Microsoft.

   
 class Maybe<T> 
  { T t;
    Maybe(){}

    public static Maybe<T> Just(T t){ return new Maybe<T>{t=t};}

    static Maybe<T> nothing = new Maybe<T>();
    public static Maybe<T> Nothing 
     { get {return nothing;}
     }

    public Maybe<U> Select<U>(Func<T,U> f) 
     { return Maybe<U>.Just(f(t));
     }

    public Maybe<V> SelectMany<U,V>(Func<T, Maybe<U>> f, Func<U,V> g)
     { var x = f(t);
       if (x == Maybe<U>.Nothing) return Maybe<V>.Nothing;
       return Maybe<V>.Just(g(x.t));
     }
  }