]> git.lizzy.rs Git - uwu-lang.git/blobdiff - README.md
Update capitalization of Turing in the README (#1)
[uwu-lang.git] / README.md
index 211c407f9a604d8e5b89a8f67adddcaf5dcc8608..e315367463e88a1ba9e5968ca3ba2ecdbec17f50 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
 # uwulang
-UWU (**U**ltimate p**W**ogwamming lang**U**age) is a **functional**, **interpreted**, **weakly typed** programming language written in C.
+UWU (**U**ltimate p**W**ogwamming lang**U**age) is a **functional**, **interpreted**, **weakly typed**, **lazy evaluation** programming language written in C.
 
 ```uwu
 fibo
-       :bool:if(:int:smaller($0, 0), 0,
-       :bool:if(:int:equal($0, 0),   1,
-       :int:add(
-               fibo(:int:sub($0, 1)),
-               fibo(:int:sub($0, 2))
+       bool.if(int.smaller($1, 0), 0,
+       bool.if(int.equal($1, 0),   1,
+       int.add(
+               fibo(int.sub($1, 1)),
+               fibo(int.sub($1, 2))
        )))
 ```
 
@@ -21,20 +21,27 @@ You can run the example using `./uwu example/test.uwu`
 - A meme - 10%
 - Meant for actual use - 5%
 
-It's turing complete and somewhat useable.
+It's Turing complete and somewhat useable.
 
 ## Invocation
 
+Make sure the submodules are checked out:
+
+```
+git submodule update --init
+```
+
 To build:
 
 ```
 make
+make -C std
 ```
 
 To run:
 
 ```
-./uwu <module>
+./uwu <module> <args>
 ```
 
 `<module>` is a path relative to the current directory.
@@ -52,7 +59,7 @@ Makes heavy use of a module system with relative paths.
 
 There is support for native modules written in C (or a C ABI compatible language) that are loaded at runtime. The standard library relies on this feature.
 
-Strictly follows lambda principle. Functions without arguments are constants. Functions can (by design) not interact with anything globally, the input is passed to the main function and the only output is the return value of the main function. _However_, global interaction (e.g. print() or read()) could theoretically be added by native modules and since the VM does not cache any results and always calls functions, even .
+Strictly follows lambda principle. Functions without arguments are constants. Functions can (by design) not interact with anything globally, the input is passed to the main function and the only output is the return value of the main function. _However_, global interaction (e.g. print() or read()) could theoretically be added by native modules and since the VM does not cache any results and always calls functions.
 
 Arguments are always passed by value, there are no references (except references to functions). This way, all memory allocation is stack based and no garbage collector is needed.