static IEnumerable <bool> uncle(object Person, object Uncle) { UnifyingVariable Parent = new UnifyingVariable(); foreach (bool l1 in parent(Person, Parent)) { foreach (bool l2 in brother(Parent, Uncle)) { yield return(false); } } }
static IEnumerable <bool> personWithUnify(UnifyingVariable Person) { foreach (bool l1 in Person.unify("Chelsea")) { yield return(false); } foreach (bool l1 in Person.unify("Hillary")) { yield return(false); } foreach (bool l1 in Person.unify("Bill")) { yield return(false); } }
static void Main(string[] args) { Console.WriteLine("Names using a return value:"); foreach (string p in personWithReturnValue()) { Console.WriteLine(p); } Console.WriteLine("Names using SimpleVariable:"); SimpleVariable P = new SimpleVariable(); foreach (bool l1 in personWithSimpleVariable(P)) { Console.WriteLine(P._value); } Console.WriteLine("Names using UnifyingVariable:"); UnifyingVariable Person = new UnifyingVariable(); foreach (bool l1 in personWithUnify(Person)) { Console.WriteLine(Person._value); } Console.WriteLine("Use unify to check a person:"); foreach (bool l1 in Person.unify("Hillary")) { foreach (bool l2 in personWithUnify(Person)) { Console.WriteLine("Hillary is a person."); } } foreach (bool l1 in Person.unify("Buddy")) { foreach (bool l2 in personWithUnify(Person)) { // This won't print. Console.WriteLine("Buddy is a person."); } } Console.WriteLine("Use generalUnify to check a person:"); foreach (bool l1 in person("Hillary")) { Console.WriteLine("Hillary is a person."); } foreach (bool l1 in person("Buddy")) { // This won't print. Console.WriteLine("Buddy is a person."); } Console.WriteLine("Find relations:"); UnifyingVariable Brother = new UnifyingVariable(); foreach (bool l1 in brother("Hillary", Brother)) { Console.WriteLine("Hillary has brother " + Brother._value + "."); } Console.WriteLine("Joining functions:"); UnifyingVariable Uncle = new UnifyingVariable(); foreach (bool l1 in uncle(Person, Uncle)) { Console.WriteLine(Person._value + " has uncle " + Uncle._value + "."); } Console.WriteLine("\nPress Enter to finish."); Console.ReadLine(); }