C++テンプレートでLispに触発されて作成。 lisp.h #pragma once // nil ====================================== struct nil { typedef nil eval; }; #define nil nil::eval // t ======================================== struct T { typedef T eval; }; #define T T::eval // cons ====================================== template < class A, class B> class cons { typedef typename A::eval left; typedef typename B::eval right; public: