diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/greeting.ts | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/examples/greeting.ts b/examples/greeting.ts index 72edde2..f285313 100644 --- a/examples/greeting.ts +++ b/examples/greeting.ts @@ -1,20 +1,27 @@ -import { Bind, Kind1 } from '../stdlib/effect' +import { Bind, Do, Kind1 } from '../stdlib/effect' +import { WriteFile } from '../stdlib/fs' import { PutString, ReadLine, PutStringLn } from '../stdlib/stdio' -interface ResponseK extends Kind1<string> { - return: PutStringLn<`Interesting that you believe "${this['input']}" is your purpose. Hmmmm...`> -} - export type main = [ PutStringLn<'Greetotron 6000 initializing...'>, + PutStringLn<''>, - PutStringLn<'----------------'>, PutString<'Your name? '>, Bind<ReadLine, <name extends string>() => PutStringLn<`Hello, ${name}`>>, - PutStringLn<'----------------'>, PutString<'Your purpose in life? '>, - Bind<ReadLine, ResponseK>, + Bind<ReadLine, HandleResponseK>, - PutStringLn<'----------------'> + PutStringLn<'Bye bye'> ] + +interface HandleResponseK extends Kind1<string> { + return: Do< + [ + PutStringLn<`Interesting that you believe "${this['input']}" is your purpose. Hmmmm...`>, + PutStringLn<'Judging harshly...'>, + PutStringLn<'Saving response...'>, + WriteFile<'./response.txt', this['input']> + ] + > +} |
