]> git.lizzy.rs Git - uwu-nolambda.git/blob - flow.c
Implement nolambda:os module
[uwu-nolambda.git] / flow.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include "common/err.h"
4 #include "api/vm.h"
5 #include "api/nil.h"
6 #include "api/str.h"
7
8 UwUVMValue uwu_linear(UwUVMArgs *args)
9 {
10         if (args->num < 1)
11                 error("error: nolambda:flow:linear requires at least one argument\n");
12
13         size_t return_arg = args->num - 1;
14
15         for (size_t i = 0; i < return_arg; i++)
16                 uwuvm_get_arg(args, i);
17
18         return uwuvm_clone_value(uwuvm_get_arg(args, return_arg));
19 }
20
21 UwUVMValue uwu_error(UwUVMArgs *args)
22 {
23         if (args->num != 1)
24                 error("error: nolambda:flow:error requires exactly one argument\n");
25
26         char *err = uwustr_get(uwuvm_get_arg(args, 0));
27         fprintf(stderr, "%s\n", err);
28         free(err);
29
30         exit(1);
31
32         return uwunil_create();
33 }