aboutsummaryrefslogtreecommitdiff
path: root/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.ts')
-rw-r--r--src/index.ts25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/index.ts b/src/index.ts
index 7ee4461..df2643a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,17 +1,38 @@
-import { Program, Print, PutString, Bind, Debug, Kind1, GetEnv, JsExpr, ReadFile, GetArgs, ReadLine } from './stdlib'
+import { Program, Print, PutString, Bind, Debug, Kind1, GetEnv, JsExpr, ReadFile, GetArgs, ReadLine, Seq } from './stdlib'
interface PrintK<Label extends string = ""> extends Kind1<unknown> {
return: Debug<Label, this['input']>
}
+interface AskForGuess<N extends number> extends Kind1<string> {
+ return: this['input'] extends `${N}` ? Print<"Yaya"> : Print<"naaah">
+}
+
+interface StartGuessing extends Kind1<number> {
+ return: Bind<Seq<[PutString<"Your guess? ">, ReadLine]>, AskForGuess<this['input']>>
+}
+
export type main = Program<[
Bind<GetArgs, PrintK>,
+ PutString<"1,2,3? ">,
[1, 2, 3] extends infer Res ? Print<Res> : never,
Bind<GetEnv<"NODE_ENV">, PrintK>,
Bind<JsExpr<"{ boobaa: [5 * 3, 5 * 2] }">, PrintK>,
- // ChainIO<ReadLine, WithInputK>,
Bind<ReadFile<"./default.nix">, PrintK>,
+
PutString<"Your name? ">,
Bind<ReadLine, PrintK<"Hello,">>,
+
+ Bind<
+ JsExpr<"Math.floor(Math.random() * 10)">,
+ StartGuessing
+ >,
+
+ Print<"Before times">,
+ Seq<[
+ Print<"Hey">,
+ Print<"Wow">,
+ Bind<JsExpr<"200 * 2">, PrintK<"200 * 2 =">>,
+ ]>,
]>