squiggleDefinition.js (750B)
1 import { parse } from "../../ast/parse.js"; 2 import { defaultEnv } from "../../dist/env.js"; 3 import { compileAst } from "../../expression/compile.js"; 4 import { createContext } from "../../reducer/context.js"; 5 export function makeSquiggleDefinition({ builtins, name, code, }) { 6 const astResult = parse(code, "@stdlib"); 7 if (!astResult.ok) { 8 throw new Error(`Stdlib code ${code} is invalid`); 9 } 10 const expressionResult = compileAst(astResult.value, builtins); 11 if (!expressionResult.ok) { 12 throw expressionResult.value; 13 } 14 const context = createContext(defaultEnv); 15 const [value] = context.evaluate(expressionResult.value, context); 16 return { name, value }; 17 } 18 //# sourceMappingURL=squiggleDefinition.js.map