summaryrefslogtreecommitdiff
path: root/examples/branching.ts
blob: e504f9da2957f73199c226a312119e71ee558d0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
KaiScript is turing complete. Use the "?" function to branch execution.
Only the branch matching the condition will be evaluated.
*/

import { createFn } from "../src";

const myBranchingFn = createFn<[boolean]>()("fn(b, ?(b, 1, 0))");

// const result: 1
const result = myBranchingFn(true);

// This is very powerful! For example, if you're bad at addition, KaiScript can check your work
const isAdditionCorrect = createFn<[m: number, n: number, expected: number]>()(
  `fn(m,n,e, ?(eq(add(m, n), e), "correct", "incorrect"))`
);

// const badAddition: "incorrect"
const badAddition = isAdditionCorrect(5, 10, 2);
console.log(badAddition);

// const goodAddition: "correct"
const goodAddition = isAdditionCorrect(5, 10, 15);
console.log(goodAddition);