/* ============================================================================= * spreadsheet_eval.ts (주인 A) * 나무 풀기 · 오류 값 전파 · 형 바꾸기(엑셀 규칙). B 의 함수들이 형 바꾸기 도우미를 씀. * 빈 칸 = 수에서 0 · 글에서 "" · `"12"+1 = 13` · `TRUE+1 = 2` · 글이 수로 안 읽히면 `#VALUE!`. * 무리수(SQRT · 삼각 · PI · 소수 거듭제곱)는 double → 유효 15 자리 십진 → 분수(B · A 같이 `fromDouble`). * 0 계약 머리 — 몸은 A 가 채움. * ========================================================================== */ import type { CalcValue, ErrorCode, ErrorValue, EvalContext, EvalResult, FormulaNode, Frac, Scalar, } from "./spreadsheet_types"; const todo = (): never => { throw new Error("spreadsheet_eval: 아직 없음(A)"); }; export function evaluate(_node: FormulaNode, _ctx: EvalContext): EvalResult { return todo(); } export function err(_code: ErrorCode, _why?: string): ErrorValue { return todo(); } export function isError(_value: unknown): _value is ErrorValue { return todo(); } /** 수로 — 빈 칸 0 · 참거짓 1/0 · 수 글 · 아니면 `#VALUE!` · 범위는 칸 하나일 때만 */ export function asNumber(_value: EvalResult): Frac | ErrorValue { return todo(); } /** 글로 — 수는 일반 형식 글(엑셀 `&` 와 같게) · 참거짓 `TRUE`/`FALSE` */ export function asText(_value: EvalResult): string | ErrorValue { return todo(); } export function asBool(_value: EvalResult): boolean | ErrorValue { return todo(); } /** double → 유효 15 자리 십진 → 분수 · NaN · 무한은 `#NUM!` */ export function fromDouble(_x: number): Frac | ErrorValue { return todo(); } /** 저장 모양 — 수는 십진 글(30 자리까지) */ export function toCalcValue(_value: Scalar): CalcValue { return todo(); }