using System; using NPhilosopher.NILC; namespace NPhilosopher { module NPhilosopher { Main() : void { Walk(Reflector.Reflect("Test/HelloWorld.exe")); } Walk(obj : NAssembly) : void { | NAssembly.Assembly(name, types) => Console.WriteLine("Assembly: {0}", name); Walk(types); | NAssembly.Type(name, members) => Console.WriteLine("\tType: {0}", name); Walk(members); | NAssembly.Method(name, args, returnType) => Console.WriteLine("\t\tMethod: {0}", name); Walk(args); Console.WriteLine("\t\t\tReturns: {0}", returnType); | NAssembly.Argument(name, argType) => Console.WriteLine("\t\t\tArgument: {0} : {1}", name, argType); | _ => (); } Walk(obj : list [NAssembly]) : void { match(obj) { | [] => (); | head :: tail => Walk(head); Walk(tail); } } } }