Exemplo n.º 1
0
 public static object Bind(object d, Func <object, object> g)
 {
     if (Nil.Equals(d))
     {
         return(Mzero);
     }
     else if (IsProcedure(d))
     {
         return(new Func <object>(() => Bind(Call(d), g)));
     }
     else
     {
         return(Mplus(g.Call(Car(d)), Bind(Cdr(d), g)));
     }
 }
Exemplo n.º 2
0
 private static object Mplus(object d1, object d2)
 {
     if (Nil.Equals(d1))
     {
         return(d2);
     }
     else if (IsProcedure(d1))
     {
         return(new Func <object>(() => Mplus(d2, Call(d1))));
     }
     else
     {
         return(Cons(Car(d1), Mplus(Cdr(d1), d2)));
     }
 }