|
C++ Template Lambda-Calculus Interpreter |
This page is about a lambda-calculus interpreter encoded in the C++ template system. Oh, yes, it's ugly.
|
let two = S (S Z) in let x = two + two in x + x |
|
typedef Succ <Succ <Zero> > two ; typedef Let <1u, Sum <two, two>, Sum <Var <1>, Var <1> > > prog ; cout << eval <prog> () ; |
|
typedef Succ <Succ <Zero> > two ; typedef Let <1u, Sum <two, two>, Sum <Var <1>, Var <1> > > prog ; eval_type <prog> :: rtt x = eval <prog> () ; |