#ifndef roza_FUNTY_HPP #define roza_FUNTY_HPP #include "Type.hpp" namespace roza { class FunTy: public Type { public: explicit FunTy(); virtual ~FunTy(); std::shared_ptr get_output() const { return m_output; } void add_input(std::shared_ptr ty); void set_output(std::shared_ptr ty); std::string string() const override; bool equals(BaseType rhs) const override; bool equals(Type const& rhs) const override; private: std::vector> m_inputs; std::shared_ptr m_output = std::make_shared(TY_NIL); }; } #endif