summaryrefslogtreecommitdiff
path: root/src/scenes/boolean_algebra_lambda.tsx
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-02-13 20:00:02 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2024-02-13 20:00:02 -0700
commit0c476e92e1807928ffb30864126076ef4c6a0821 (patch)
treea4992161ce4b6203edffb5d78533e9c73e61e6f1 /src/scenes/boolean_algebra_lambda.tsx
parent512c245466fad78106a046c1ea6233acdcc3e4de (diff)
downloadcompiling-the-lambda-calculus-0c476e92e1807928ffb30864126076ef4c6a0821.tar.gz
compiling-the-lambda-calculus-0c476e92e1807928ffb30864126076ef4c6a0821.zip
add all the stuffHEADmain
Diffstat (limited to 'src/scenes/boolean_algebra_lambda.tsx')
-rw-r--r--src/scenes/boolean_algebra_lambda.tsx49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/scenes/boolean_algebra_lambda.tsx b/src/scenes/boolean_algebra_lambda.tsx
new file mode 100644
index 0000000..2639461
--- /dev/null
+++ b/src/scenes/boolean_algebra_lambda.tsx
@@ -0,0 +1,49 @@
+import { Layout, makeScene2D } from "@motion-canvas/2d";
+import {
+ Direction,
+ beginSlide,
+ createRef,
+ slideTransition,
+} from "@motion-canvas/core";
+import { LambdaReducer } from "../components/lambda_reducer";
+import { baseDefinitions } from "../utils/lambdas";
+
+export default makeScene2D(function* (view) {
+ const lambdaReducer = createRef<LambdaReducer>();
+ const layout = createRef<Layout>();
+
+ view.add(
+ <Layout
+ layout
+ ref={layout}
+ direction="column"
+ alignItems="center"
+ gap={50}
+ ></Layout>
+ );
+ yield* slideTransition(Direction.Right);
+ yield* beginSlide("Boolean Reductions");
+
+ for (const term of [
+ "((false one) zero)",
+ "((true one) zero)",
+ "(((if true) one) zero)",
+ ]) {
+ yield* layout().opacity(0, 0.5);
+ layout().add(
+ <LambdaReducer
+ ref={lambdaReducer}
+ lambdaTerm={term}
+ definitions={baseDefinitions}
+ ></LambdaReducer>
+ );
+ yield* layout().opacity(1, 0.5);
+
+ yield* beginSlide("Next Reduction " + term);
+ for (let i = 0; !lambdaReducer().isDone(); i++) {
+ yield* lambdaReducer().step(0.5);
+ yield* beginSlide(term + " Next Step " + i);
+ }
+ layout().removeChildren();
+ }
+});