#pragma once #include "AST/Base.h" #include #include #include namespace plsm { namespace ast { class FnParam; class LambdaExpr : public Expr { std::vector> params; std::vector> body; public: LambdaExpr(LOC_ARG, std::vector params, std::vector body) : Expr(sourceRange), params(), body() { for (auto ¶m : params) { this->params.push_back(std::shared_ptr(param)); } for (auto &expr : body) { this->body.push_back(std::shared_ptr(expr)); } } virtual boost::json::value toJson() override; static LambdaExpr *fromJson(boost::json::value json); virtual std::any accept(ASTVisitor *visitor, std::any param) override { return visitor->visit(*this, param); } }; } // namespace ast } // namespace plsm