#pragma once #include #include #include namespace lily { struct pattern { virtual ~pattern() = default; }; typedef std::unique_ptr pattern_ptr; struct pattern_var : pattern { std::string name; pattern_var(std::string n) : name(std::move(n)) {} ~pattern_var() = default; }; struct pattern_cons : pattern { std::string name; std::vector vnames; pattern_cons(std::string n) : name(std::move(n)) {} ~pattern_cons() = default; }; }