import { useContext } from "react"; import { ExprBlock, type ExprBlockState } from "./ExprBlock"; import { EnvContext } from "../../context/EnvContext"; // import { evalExprBlock, makeInnerEnv, scoreResolved, type ResolvedType } from "./eval"; import { type State2Props } from "./ExprBlock"; import { GlobalContext } from "../../context/GlobalContext"; import "./LetInBlock.css"; import { Input } from "../other/Input"; import { inferTypeLet } from "../../eval/infer_type"; import { Type } from "../other/Type"; export interface LetInBlockState { kind: "let"; name: string; focus: boolean; value: ExprBlockState; inner: ExprBlockState; } export interface LetInBlockProps extends State2Props { } export function LetInBlock(props: LetInBlockProps) { return
} function DeclColumns({state, setState, score}) { const env = useContext(EnvContext); const globalContext = useContext(GlobalContext); const setInner = callback => setState(state => ({...state, inner: callback(state.inner)})); const setValue = callback => setState(state => ({...state, value: callback(state.value)})); // const valueSuggestionPriority = (suggestion: ResolvedType) => { // const innerEnv = makeInnerEnv(env, name, suggestion); // const [resolved] = evalExprBlock(inner, innerEnv); // return scoreResolved(resolved, score); // }; // const [valueResolved] = evalExprBlock(value, env); // const innerEnv = makeInnerEnv(env, name, valueResolved); const {paramType, innerEnv} = inferTypeLet(state, env); return <> let  {}} onCancel={() => {}} onTextChange={name => setState(state => ({...state, name}))} extraHandlers={{}} /> ::  =  0} onCancel={() => setState(state => state.inner)} // keep inner /> {state.inner.kind === "let" && globalContext?.syntacticSugar && } ; } function InnerMost({state, setState, score}) { const env = useContext(EnvContext); const globalContext = useContext(GlobalContext); const setInner = callback => setState(state => ({...state, inner: callback(state.inner)})); // const [valueResolved] = evalExprBlock(state.value, env); // const innerEnv = makeInnerEnv(env, state.name, valueResolved); const {paramType, innerEnv} = inferTypeLet(state, env); const onCancel = () => setState(state => state.value); if (state.inner.kind === "let" && globalContext?.syntacticSugar) { return ; } else { return } }