diff options
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 |
