import {getType, getInst, getSymbol, Double, Int, symbolFunction, symbolProduct, symbolSum, symbolDict, symbolSet, symbolList, eqType, match, getLeft, getRight, dict, Bool, set, Unit, symbolType, symbolUUID, getHumanReadableName} from "dope2"; import "./Value.css"; import { Type } from "./Type"; export function Value({dynamic}) { const type = getType(dynamic); const inst = getInst(dynamic); if (eqType(type)(Double)) { return ; } if (eqType(type)(Int)) { return ; } if (eqType(type)(Bool)) { return ; } if (eqType(type)(Unit)) { return ; } const symbol = getSymbol(type); switch (symbol) { case symbolFunction: return ; case symbolSum: return ; case symbolProduct: return ; case symbolDict: return ; case symbolSet: return ; case symbolList: return ; case symbolType: return ; case symbolUUID: return default: return <>don't know how to show value; } } function ValueDouble({val}) { return {val.toString()}; } function ValueInt({val}) { return {val.toString()}; } function ValueFunction() { return <>𝑓𝑛 ; } function ValueBool({val}) { return {val.toString()}; } function ValueList({val, elemType}) { return [{val.map((v, i) => )}]; } function ValueSet({val, elemType}) { return {'{'}{set.fold(acc => elem => acc.concat([elem]))([])(val).map((v, i) => )}{'}'}; } function ValueDict({val, keyType, valueType}) { return {'{'}{dict.fold(acc => key => value => acc.concat([[key,value]]))([])(val).map(([key, value], i) => )}{'}'}; } function ValueSum({val, leftType, rightType}) { return match(val) (l => L ) (r => R ); } function ValueProduct({val, leftType, rightType}) { return (); } function ValueUnit() { return <>{'()'}; } function ValueUUID({val}) { return {getHumanReadableName(val)}; }