## Modules
-Note: The module `nolambda:global` is not implemented yet.
+Note: The module `global` is not implemented yet.
-### `nolambda:flow`
+### `flow`
-- `nolambda:flow:linear`: Accepts an arbitrary number of arguments of arbitrary type, but at least one and evaulates all of them in order. Returns the last argument.
-- `nolambda:flow:error`: Accepts an arbitrary type as $0, prints it to stderr appending a newline and exits the program with failure. Returns `:nil:nil` in theory.
+- `flow:linear`: Accepts an arbitrary number of arguments of arbitrary type, but at least one and evaulates all of them in order. Returns the last argument.
+- `flow:error`: Accepts an arbitrary type as $0, prints it to stderr appending a newline and exits the program with failure. Returns `:nil:nil` in theory.
-### `nolambda:io`
+### `io`
-- `nolambda:io:print`: Accepts an arbitrary type as $0 and prints it to stdout, followed by a newline. Returns $0.
-- `nolambda:io:scan`: Reads a line from stdin and returns it as a string, without the newline character at the end. If $0 is given, it is used as a prompt (after converting to string).
+- `io:print`: Accepts an arbitrary type as $0 and prints it to stdout, followed by a newline. Returns $0.
+- `io:scan`: Reads a line from stdin and returns it as a string, without the newline character at the end. If $0 is given, it is used as a prompt (after converting to string).
-### `nolambda:fs`
+### `fs`
Note: all file paths are relative to the _directory the program was started from_.
-- `nolambda:fs:read`: Accepts a file name (arbirary value, converted to string) as $0 and returns it's contents as a string. Causes an error if the file does not exist.
-- `nolambda:fs:write`: Accepts a file name (arbirary value, converted to string) as $0 and overwrites it with the contents in $1 (arbirary value, converted to string). Causes an error if the file could not be written. Returns `:nil:nil`.
-- `nolambda:fs:remove`: Accepts an arbitrary number of file names (arbirary type, converted to string), but at least one and unlinks them from the file system (the files can also be a directories). Causes an error if one of the file could not be removed, or if some or all of the files did not exist in the first place. Returns `:nil:nil`.
-- `nolambda:fs:exists`: Accepts an arbitrary number of file names (arbirary type, converted to string), but at least one and returns `:bool:true` if all of them exist, `:bool:fase` else.
+- `fs:read`: Accepts a file name (arbirary value, converted to string) as $0 and returns it's contents as a string. Causes an error if the file does not exist.
+- `fs:write`: Accepts a file name (arbirary value, converted to string) as $0 and overwrites it with the contents in $1 (arbirary value, converted to string). Causes an error if the file could not be written. Returns `:nil:nil`.
+- `fs:remove`: Accepts an arbitrary number of file names (arbirary type, converted to string), but at least one and unlinks them from the file system (the files can also be a directories). Causes an error if one of the file could not be removed, or if some or all of the files did not exist in the first place. Returns `:nil:nil`.
+- `fs:exists`: Accepts an arbitrary number of file names (arbirary type, converted to string), but at least one and returns `:bool:true` if all of them exist, `:bool:fase` else.
-### `nolambda:os`
+### `os`
-- `nolambda:os:exit`: Optionally takes an exit code (integer) as $0 and exits the program with the given exit code, or 0 if no exit code was given. Returns `:nil:nil` in theory.
-- `nolambda:os:sleep`: Takes an integer as $0 and pauses the execution of the program for $1 milliseconds. Returns `:nil:nil`.
-- `nolambda:os:execute`: Takes a command (arbirary value, converted to string) as $0 and executes it as a shell command. Returns the exit code of the command as an integer.
-- `nolambda:os:time`: Returns the current unix millis as an integer.
+- `os:exit`: Optionally takes an exit code (integer) as $0 and exits the program with the given exit code, or 0 if no exit code was given. Returns `:nil:nil` in theory.
+- `os:sleep`: Takes an integer as $0 and pauses the execution of the program for $1 milliseconds. Returns `:nil:nil`.
+- `os:execute`: Takes a command (arbirary value, converted to string) as $0 and executes it as a shell command. Returns the exit code of the command as an integer.
+- `os:time`: Returns the current unix millis as an integer.
-### `nolambda:global`
+### `global`
-- `nolambda:global:set`: Creates or overwrites a global variable named $0 (arbirary value, converted to string) and puts the contents of $1 (arbitrary type) into it. Returns `:bool:false` if the variable existed previously and was updated, `:bool:true` if it was created.
-- `nolambda:global:get`: Returns the global variable named $0 (arbirary value, converted to string). Causes an error if the variable does not exist.
-- `nolambda:global:exists`: Returns `:bool:true` if the global variable named $0 (arbirary value, converted to string) exists, `:bool:false` else.
-- `nolambda:global:delete`: Deletes the global variable named $0 (arbirary value, converted to string). Returns `:bool:true` if the variable existed previously, `:bool:false` else.
+- `global:set`: Creates or overwrites a global variable named $0 (arbirary value, converted to string) and puts the contents of $1 (arbitrary type) into it. Returns `:bool:false` if the variable existed previously and was updated, `:bool:true` if it was created.
+- `global:get`: Returns the global variable named $0 (arbirary value, converted to string). Causes an error if the variable does not exist.
+- `global:exists`: Returns `:bool:true` if the global variable named $0 (arbirary value, converted to string) exists, `:bool:false` else.
+- `global:delete`: Deletes the global variable named $0 (arbirary value, converted to string). Returns `:bool:true` if the variable existed previously, `:bool:false` else.
-### `nolambda:random`
+### `random`
-- `nolambda:random:random`: Returns a pseudorandom integer between $0 (integer) and $1 (integer). The range is inclusive on both boundse. Causes an error if the range is bigger than `nolambda:random:max` or empty.
-- `nolambda:random:max`: Returns RAND_MAX.
-- `nolambda:random:seed`: Sets the random seed to $0 (integer) and returns `:nil:nil`.
+- `random:random`: Returns a pseudorandom integer between $0 (integer) and $1 (integer). The range is inclusive on both boundse. Causes an error if the range is bigger than `random:max` or empty.
+- `random:max`: Returns RAND_MAX.
+- `random:seed`: Sets the random seed to $0 (integer) and returns `:nil:nil`.
UwUVMValue uwu_linear(UwUVMArgs *args)
{
- uwuutil_require_min("nolambda:flow:linear", args, 1);
+ uwuutil_require_min("flow:linear", args, 1);
size_t return_arg = args->num - 1;
UwUVMValue uwu_error(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:flow:error", args, 1);
+ uwuutil_require_exact("flow:error", args, 1);
char *err = uwustr_get(uwuvm_get_arg(args, 0));
fprintf(stderr, "%s\n", err);
UwUVMValue uwu_read(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:fs:read", args, 1);
+ uwuutil_require_exact("fs:read", args, 1);
char *filename = uwustr_get(uwuvm_get_arg(args, 0));
UwUVMValue uwu_write(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:fs:write", args, 2);
+ uwuutil_require_exact("fs:write", args, 2);
char *filename = uwustr_get(uwuvm_get_arg(args, 0));
char *contents = uwustr_get(uwuvm_get_arg(args, 1));
UwUVMValue uwu_remove(UwUVMArgs *args)
{
- uwuutil_require_min("nolambda:fs:remove", args, 1);
+ uwuutil_require_min("fs:remove", args, 1);
for (size_t i = 0; i < args->num; i++) {
char *filename = uwustr_get(uwuvm_get_arg(args, i));
UwUVMValue uwu_exists(UwUVMArgs *args)
{
- uwuutil_require_min("nolambda:fs:exists", args, 1);
+ uwuutil_require_min("fs:exists", args, 1);
for (size_t i = 0; i < args->num; i++) {
char *filename = uwustr_get(uwuvm_get_arg(args, i));
UwUVMValue uwu_print(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:io:print", args, 1);
+ uwuutil_require_exact("io:print", args, 1);
UwUVMValue value = uwuvm_get_arg(args, 0);
UwUVMValue uwu_scan(UwUVMArgs *args)
{
- uwuutil_require_max("nolambda:io:scan", args, 1);
+ uwuutil_require_max("io:scan", args, 1);
char *prompt = NULL;
UwUVMValue uwu_exit(UwUVMArgs *args)
{
- uwuutil_require_max("nolambda:os:exit", args, 1);
+ uwuutil_require_max("os:exit", args, 1);
long exit_code = 0;
UwUVMValue uwu_sleep(UwUVMArgs *args)
{
- uwuutil_require_exact("nolamda:os:sleep", args, 1);
+ uwuutil_require_exact("os:sleep", args, 1);
UwUVMValue value = uwuvm_get_arg(args, 0);
UwUVMValue uwu_execute(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:os:execute", args, 1);
+ uwuutil_require_exact("os:execute", args, 1);
char *command = uwustr_get(uwuvm_get_arg(args, 0));
int ret = system(command);
UwUVMValue uwu_time(UwUVMArgs *args)
{
- uwuutil_require_exact("nolamda:os:time", args, 0);
+ uwuutil_require_exact("os:time", args, 0);
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
UwUVMValue uwu_random(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:random:random", args, 2);
+ uwuutil_require_exact("random:random", args, 2);
UwUVMValue value0 = uwuvm_get_arg(args, 0);
if (value0.type != &uwuint_type)
- error("type error: nolamda:random:random requires an integer as $0\n");
+ error("type error: random:random requires an integer as $0\n");
UwUVMValue value1 = uwuvm_get_arg(args, 1);
if (value1.type != &uwuint_type)
- error("type error: nolamda:random:random requires an integer as $1\n");
+ error("type error: random:random requires an integer as $1\n");
long min = uwuint_get(value0);
long max = uwuint_get(value1) + 1;
long range = max - min;
if (range < 0)
- error("type error: range passed to nolambda:random:random is empty\n");
+ error("type error: range passed to random:random is empty\n");
if (range > RAND_MAX)
- error("type error: range passed to nolambda:random:random is bigger than nolambda:random:max");
+ error("type error: range passed to random:random is bigger than random:max");
return uwuint_create(min + rand() % range);
}
UwUVMValue uwu_max(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:random:max", args, 0);
+ uwuutil_require_exact("random:max", args, 0);
return uwuint_create(RAND_MAX);
}
UwUVMValue uwu_seed(UwUVMArgs *args)
{
- uwuutil_require_exact("nolambda:random:seed", args, 1);
+ uwuutil_require_exact("random:seed", args, 1);
UwUVMValue value = uwuvm_get_arg(args, 0);
if (value.type != &uwuint_type)
- error("type error: nolamda:random:seed requires an integer as $0\n");
+ error("type error: random:seed requires an integer as $0\n");
srand(uwuint_get(value) % RAND_MAX);
return uwunil_create();