aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md47
1 files changed, 38 insertions, 9 deletions
diff --git a/README.md b/README.md
index 25c9c85..4f6900c 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,57 @@
# TS Types lang
A runtime for typescript's **type system** that turns it into a **general purpose**, **purely functional** programming language with effects!
-### Documentation
+## Documentation
- [stdlib reference](./docs/modules.md)
- [examples](./examples/)
-### Example
+## Implemented effects
+ * read/write file
+ * simple stdio interactions
+ * error handling
+ * test runner
+ * mutable references
+ * evaluate js expression
+ * get cli args, env vars
+ * define custom effects
-Take a look at the [./examples](./examples) directory for more examples on how to write a program in typescript types
+
+## Example
+
+Take a look at the [./examples](./examples/) directory for more examples on how to write a program in typescript types
```typescript
-import { Bind } from 'ts-types-lang/stdlib/effect'
-import { PutString, PutStringLn, ReadLine } from 'ts-types-lang/stdlib/stdio'
+import { Bind, Do, Kind1 } from 'ts-types-lang/stdlib/effect'
+import { WriteFile } from 'ts-types-lang/stdlib/fs'
+import { PutString, ReadLine, PutStringLn } from 'ts-types-lang/stdlib/stdio'
export type main = [
- PutString<"Your name? ">,
- // Read a line from stdin and then greet
+ PutStringLn<'Greetotron 6000 initializing...'>,
+ PutStringLn<''>,
+
+ PutString<'Your name? '>,
Bind<ReadLine, <name extends string>() =>
PutStringLn<`Hello, ${name}`>>,
+
+ PutString<'Your purpose in life? '>,
+ Bind<ReadLine, HandleResponseK>,
+
+ PutStringLn<'Bye bye'>,
]
+
+// :: string -> Effect ()
+interface HandleResponseK extends Kind1<string, Effect> {
+ return: Do<[
+ PutStringLn<`Interesting that you believe "${this['input']}" is your purpose. Hmmmm...`>,
+ PutStringLn<'Judging harshly...'>,
+ PutStringLn<'Saving response...'>,
+ WriteFile<'./response.txt', this['input']>,
+ ]>
+}
```
-### Run a types-lang module
+## Run a types-lang module
Install it -
```bash
@@ -39,7 +68,7 @@ yarn exec tsr run ./examples/guess-number.ts
```
-### FAQ
+## FAQ
#### Why?
I dunno