#ifndef TYPEASVALUE_SRC_LIST_LIST_H_ #define TYPEASVALUE_SRC_LIST_LIST_H_ #include "cons.h" namespace tav { template < typename Head, typename... Tail > struct List { typedef Cons< Head, typename List::type > type; }; template struct List { typedef Cons type; }; template using Head = Car; template using Tail = Cdr; } #include "operation/basic.h" #include "operation/append.h" #endif // TYPEASVALUE_SRC_LIST_LIST_H_