diff options
| author | Akshay Nair <phenax5@gmail.com> | 2023-01-15 00:29:18 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2023-01-15 00:29:18 +0530 |
| commit | 853112fcb4cfd44d39f0232d2e9b465636e3cc7d (patch) | |
| tree | 1def8f2f6599af4e9a6a56867b90cdc9df4bc754 /README.md | |
| parent | d5c3af89ab8076bcf4107859c1ba6b47a7815142 (diff) | |
| download | ts-types-lang-853112fcb4cfd44d39f0232d2e9b465636e3cc7d.tar.gz ts-types-lang-853112fcb4cfd44d39f0232d2e9b465636e3cc7d.zip | |
chore: better example
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 47 |
1 files changed, 38 insertions, 9 deletions
@@ -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 |
