From 609338de80de82143f07107e3dfbb5f55f22e6e7 Mon Sep 17 00:00:00 2001
From: Elizabeth Hunt <elizabeth.hunt@simponic.xyz>
Date: Fri, 9 Feb 2024 11:27:11 -0700
Subject: show pure function

---
 src/scenes/pure_functions.tsx | 55 ++++++++++++++++++++++++++++++-------------
 1 file changed, 39 insertions(+), 16 deletions(-)

(limited to 'src/scenes/pure_functions.tsx')

diff --git a/src/scenes/pure_functions.tsx b/src/scenes/pure_functions.tsx
index c7e1f35..af1cc4f 100644
--- a/src/scenes/pure_functions.tsx
+++ b/src/scenes/pure_functions.tsx
@@ -1,4 +1,4 @@
-import { Node, Rect, Txt, makeScene2D } from "@motion-canvas/2d";
+import { Rect, Txt, makeScene2D } from "@motion-canvas/2d";
 import {
   Direction,
   all,
@@ -10,11 +10,10 @@ import {
 import { FunctionBox } from "../components/function_box";
 import { theme } from "../theme";
 
-const pureFunction = `const pureFib = (n: number) => {
-  if (n <= 1) {
-    retun 1;
-  }
-  return fib(n - 1) + fib(n - 2);
+const pureFib = `const pureFib = (n: number) => {
+  if (n <= 1)
+    return 1;
+  return pureFib(n - 1) + pureFib(n - 2);
 };
 pureFib;`;
 
@@ -27,7 +26,8 @@ const impureFib = (n: number) => {
 impureFib;`;
 const impureFactFunction = `const impureFact = (n: number): number => {
   while (cache.length <= n)
-    cache.push(cache.length * cache[cache.length - 1]);
+    cache.push(cache.length *
+              cache[cache.length - 1]);
   return cache[n];
 };
 impureFact;`;
@@ -66,7 +66,7 @@ export default makeScene2D(function* (view) {
           arity={1}
           idlingText=""
           workingText=""
-          source={pureFunction}
+          source={pureFib}
           ref={pureFunctionBox}
         />
       </Rect>
@@ -81,24 +81,47 @@ export default makeScene2D(function* (view) {
     impureFactFunctionBox().showCode(0.5),
   );
 
-  yield* impureFibFunctionBox().setInputs([{ val: 5 }], 0.05);
+  yield* impureFibFunctionBox().setInputs([{ val: 5 }], 0.2);
   yield* beginSlide("Show FibImpure(5)");
 
-  yield* impureFibFunctionBox().propogateInput(0.05);
-  yield* impureFibFunctionBox().propogateOutput(0.05);
+  yield* impureFibFunctionBox().propogateInput(0.2);
+  yield* impureFibFunctionBox().propogateOutput(0.2);
   yield* beginSlide("FibImpure(5)");
 
-  yield* impureFactFunctionBox().setInputs([{ val: 5 }], 0.05);
+  yield* impureFactFunctionBox().setInputs([{ val: 5 }], 0.2);
   yield* beginSlide("Show FactImpure(5)");
 
-  yield* impureFactFunctionBox().propogateInput(0.05);
-  yield* impureFactFunctionBox().propogateOutput(0.05);
+  yield* impureFactFunctionBox().propogateInput(0.2);
+  yield* impureFactFunctionBox().propogateOutput(0.2);
   yield* beginSlide("FactImpure(5)");
 
   yield* impureFactFunctionBox().reset(0.15);
   yield* impureFactFunctionBox().setInputs([{ val: 5 }], 0.15);
   yield* beginSlide("FactImpure(5) Add 5");
-  yield* impureFactFunctionBox().propogateInput(0.05);
-  yield* impureFactFunctionBox().propogateOutput(0.05);
+  yield* impureFactFunctionBox().propogateInput(0.2);
+  yield* impureFactFunctionBox().propogateOutput(0.2);
   yield* beginSlide("FactImpure(5) Correct");
+
+  yield* all(
+    impureFibFunctionBox().reset(0.5),
+    impureFactFunctionBox().reset(0.5),
+    impureFibFunctionBox().hideCode(0.5),
+    pureFunctionBox().showCode(0.5),
+  );
+
+  yield* beginSlide("Show Fib Pure");
+  yield* pureFunctionBox().reset(0.15);
+  yield* all(
+    pureFunctionBox().setInputs([{ val: 5 }], 0.15),
+    impureFactFunctionBox().setInputs([{ val: 5 }], 0.15),
+  );
+
+  yield* beginSlide("Set Inputs");
+
+  yield* pureFunctionBox().propogateInput(0.2);
+  yield* pureFunctionBox().propogateOutput(0.2);
+  yield* impureFactFunctionBox().propogateInput(0.2);
+  yield* impureFactFunctionBox().propogateOutput(0.2);
+
+  yield* beginSlide("Compute Fib");
 });
-- 
cgit v1.3

