public static TestWriter <T, L, LT> Bind <T, L, LT>(
     this TestWriter <T, L, LT> src,
     LT log,
     Func <T, TestWriter <T, L, LT> > func
     ) where L : ILogData <LT>
 {
     return(null);
 }
 //public static Maybe<T> runWriter<T, L>(
 //    this TestWriter<T , L> src ,
 //    Func< T, TestWriter<T , L> > func )
 //{
 //    var obj = src.Value as Just<T>;
 //    if ( obj != null )
 //    {
 //        var result = func(obj.Value);
 //        var output = new Writer<T,l>
 //
 //    }
 //    else
 //    {
 //
 //    }
 //}
 public static TestWriter <T, L, LT> Pass <T, L, LT>(
     this TestWriter <T, L, LT> src,
     T val,
     L log
     ) where L : ILogData <LT>
 {
     return(null);
 }