diff --git a/src/component/expr/ExprBlock.css b/src/component/expr/ExprBlock.css index 07aa347..c0b51e0 100644 --- a/src/component/expr/ExprBlock.css +++ b/src/component/expr/ExprBlock.css @@ -3,8 +3,8 @@ position: relative; } .editor.unknown { - border: 1px dashed dodgerblue; - display: inline-block; + /* border: 1px dashed dodgerblue; + display: inline-block; */ } .editor.error, .editor.unknown.error { border: 1px solid red; diff --git a/src/component/other/Input.tsx b/src/component/other/Input.tsx index 9e440f2..1381d87 100644 --- a/src/component/other/Input.tsx +++ b/src/component/other/Input.tsx @@ -1,8 +1,9 @@ import { useEffect, useRef, type ReactNode, type KeyboardEvent, useState } from "react"; -import "./Input.css"; import { focusPrevElement, focusNextElement, setRightMostCaretPosition } from "../../util/dom_trickery"; +import "./Input.css"; + interface InputProps { placeholder: string; text: string; diff --git a/src/eval/deep_eval.ts b/src/eval/deep_eval.ts index 8a27e0b..4bd42ab 100644 --- a/src/eval/deep_eval.ts +++ b/src/eval/deep_eval.ts @@ -107,19 +107,21 @@ export function deepEvalCall(s: CallBlockState, env: DynamicEnvironment): DeepEv } } export function deepEvalLet(s: LetInBlockState, env: DynamicEnvironment): DeepEvalResultLet { + let valueResult; const valueEnv = { names: trie.insert(env.names)(s.name)({ + // dirty: we introduce indirection to enable recursion recursive: true, i: () => { try { - return { val: valueResult.val }; + return valueResult; } catch (e) { return { err: e }; } }, }), }; - const valueResult = deepEvalExpr(s.value, valueEnv); + valueResult = deepEvalExpr(s.value, valueEnv); const innerEnv = { names: trie.insert(env.names)(s.name)({i: valueResult.val}), }