aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/greeting.ts25
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']>
+ ]
+ >
+}