#include #include #include #include #include "../defines/BUILTIN_PARAMETER_DECLARATION.h" #include "lambda.h" struct value* builtin_lambda( BUILTIN_PARAMETER_DECLARATION) { ENTER; if (arguments->kind != vk_list) { TODO; exit(1); } struct list_value* arguments_lv = &arguments->subclass.list; struct value* first = arguments_lv->first; if (first->kind != vk_list && first->kind != vk_null) { TODO; exit(1); } struct value* rest = arguments_lv->rest; if (rest->kind != vk_list) { TODO; exit(1); } struct value* second = rest->subclass.list.first; if (rest->subclass.list.rest->kind != vk_null) { TODO; exit(1); } struct value* result = new_user_lambda_value( /* garbage collector: */ gc, /* captured environment: */ environment, /* parameters: */ first, /* body: */ second); EXIT; return result; }