From 853112fcb4cfd44d39f0232d2e9b465636e3cc7d Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 15 Jan 2023 00:29:18 +0530 Subject: chore: better example --- README.md | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) (limited to 'README.md') 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() => PutStringLn<`Hello, ${name}`>>, + + PutString<'Your purpose in life? '>, + Bind, + + PutStringLn<'Bye bye'>, ] + +// :: string -> Effect () +interface HandleResponseK extends Kind1 { + 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 -- cgit v1.3.1