commit 94803421acd2e5cb3a0f88e10f9244d374fab20b Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 08:48:33 2022 +0200 note on old habbits commit 2c47f80fce8fa6c12cb53b97f7150758eaa74b88 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 08:18:16 2022 +0200 getTag returns enum value commit 733b9a820f1d01b618708896451a112d638ee811 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 07:07:30 2022 +0200 result commit 64698f4a930182b3ccf122849824e4b6df251a9f Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 06:48:30 2022 +0200 return tags as ts enum commit 8ac802428a7aaac5367f5e8a9aaa592b89e305eb Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 06:16:26 2022 +0200 export tags commit 6c843e475a98ca1fcfa893d09d45ac9ad7c633ee Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 06:11:00 2022 +0200 distribution tag commit 9a43ec30fcaf967a672475431243949748d00bc7 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 05:46:24 2022 +0200 opaque result commit f89bdd47c41135135baac99b18faf1c418cc4142 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 05:24:18 2022 +0200 make ts compilable commit 6609bb3691b08405639e6f20da0fad309f2f232e Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 05:21:34 2022 +0200 compiles commit bace3eca63079de8f285069c65b219601e7310bf Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 04:33:34 2022 +0200 rescript compiles commit cd095f605c543902edec08fdcd407600296ec0cb Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 02:40:31 2022 +0200 squiggleValue commit 9b78b5d6c8b69287458fe392f142ceb3bca99407 Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 02:37:11 2022 +0200 project commit 20c8693b1eb6492f1662bedbb26b469aac11f8ff Author: Umur Ozkul <umur@hightechmind.io> Date: Mon Aug 22 00:59:44 2022 +0200 compiles
280 lines
7.5 KiB
TypeScript
280 lines
7.5 KiB
TypeScript
/**
|
|
Umur: Delete this file! There is nothing left to see here.
|
|
**/
|
|
|
|
// import * as _ from "lodash";
|
|
// import type {
|
|
// // expressionValue,
|
|
// mixedShape,
|
|
// sampleSetDist,
|
|
// genericDist,
|
|
// // environment,
|
|
// symbolicDist,
|
|
// discreteShape,
|
|
// continuousShape,
|
|
// // lambdaValue,
|
|
// // lambdaDeclaration,
|
|
// // declarationArg,
|
|
// } from "../rescript/TypescriptInterface.gen";
|
|
// import { Distribution } from "./distribution";
|
|
// import { tagged, tag } from "./types";
|
|
// This file is here to compensate for genType not fully recursively converting types
|
|
|
|
// Raw rescript types.
|
|
// Umur: Rescript expression values are opaque!
|
|
// export type rescriptExport =
|
|
// | 0 // EvVoid
|
|
// | {
|
|
// TAG: 0; // EvArray
|
|
// _0: rescriptExport[];
|
|
// }
|
|
// | {
|
|
// TAG: 1; // EvString
|
|
// _0: string[];
|
|
// }
|
|
// | {
|
|
// TAG: 2; // EvBool
|
|
// _0: boolean;
|
|
// }
|
|
// | {
|
|
// TAG: 3; // EvCall
|
|
// _0: string;
|
|
// }
|
|
// | {
|
|
// TAG: 4; // EvDistribution
|
|
// _0: rescriptDist;
|
|
// }
|
|
// | {
|
|
// TAG: 5; // EvLambda
|
|
// _0: lambdaValue;
|
|
// }
|
|
// | {
|
|
// TAG: 6; // EvNumber
|
|
// _0: number;
|
|
// }
|
|
// | {
|
|
// TAG: 7; // EvRecord
|
|
// _0: { [key: string]: rescriptExport };
|
|
// }
|
|
// | {
|
|
// TAG: 8; // EvString
|
|
// _0: string;
|
|
// }
|
|
// | {
|
|
// TAG: 9; // EvSymbol
|
|
// _0: string;
|
|
// }
|
|
// | {
|
|
// TAG: 10; // EvDate
|
|
// _0: Date;
|
|
// }
|
|
// | {
|
|
// TAG: 11; // EvTimeDuration
|
|
// _0: number;
|
|
// }
|
|
// | {
|
|
// TAG: 12; // EvDeclaration
|
|
// _0: rescriptLambdaDeclaration;
|
|
// }
|
|
// | {
|
|
// TAG: 13; // EvTypeIdentifier
|
|
// _0: string;
|
|
// }
|
|
// | {
|
|
// TAG: 14; // EvModule
|
|
// _0: { [key: string]: rescriptExport };
|
|
// };
|
|
|
|
// Umur: opaque type
|
|
// type rescriptDist =
|
|
// | { TAG: 0; _0: rescriptPointSetDist }
|
|
// | { TAG: 1; _0: sampleSetDist }
|
|
// | { TAG: 2; _0: symbolicDist };
|
|
|
|
// Umur: opaque type, no conversion
|
|
// type rescriptPointSetDist =
|
|
// | {
|
|
// TAG: 0; // Mixed
|
|
// _0: mixedShape;
|
|
// }
|
|
// | {
|
|
// TAG: 1; // Discrete
|
|
// _0: discreteShape;
|
|
// }
|
|
// | {
|
|
// TAG: 2; // ContinuousShape
|
|
// _0: continuousShape;
|
|
// };
|
|
|
|
// type rescriptLambdaDeclaration = {
|
|
// readonly fn: lambdaValue;
|
|
// readonly args: rescriptDeclarationArg[];
|
|
// };
|
|
|
|
// type rescriptDeclarationArg =
|
|
// | {
|
|
// TAG: 0; // Float
|
|
// min: number;
|
|
// max: number;
|
|
// }
|
|
// | {
|
|
// TAG: 1; // Date
|
|
// min: Date;
|
|
// max: Date;
|
|
// };
|
|
|
|
// Umur: Squiggle expressions are opaque!
|
|
// export type squiggleExpression =
|
|
// | tagged<"symbol", string>
|
|
// | tagged<"string", string>
|
|
// | tagged<"call", string>
|
|
// | tagged<"lambda", lambdaValue>
|
|
// | tagged<"array", squiggleExpression[]>
|
|
// | tagged<"arraystring", string[]>
|
|
// | tagged<"boolean", boolean>
|
|
// | tagged<"distribution", Distribution>
|
|
// | tagged<"number", number>
|
|
// | tagged<"date", Date>
|
|
// | tagged<"timeDuration", number>
|
|
// | tagged<"lambdaDeclaration", lambdaDeclaration>
|
|
// | tagged<"record", { [key: string]: squiggleExpression }>
|
|
// | tagged<"type", { [key: string]: squiggleExpression }>
|
|
// | tagged<"typeIdentifier", string>
|
|
// | tagged<"module", { [key: string]: squiggleExpression }>
|
|
// | tagged<"void", string>;
|
|
|
|
// export { lambdaValue };
|
|
|
|
// Umur: Opaque type no conversion!
|
|
// export function convertRawToTypescript(
|
|
// result: rescriptExport,
|
|
// environment: environment
|
|
// ): squiggleExpression {
|
|
// if (typeof result === "number") {
|
|
// // EvVoid
|
|
// return tag("void", "");
|
|
// }
|
|
// switch (result.TAG) {
|
|
// case 0: // EvArray
|
|
// return tag(
|
|
// "array",
|
|
// result._0.map((x) => convertRawToTypescript(x, environment))
|
|
// );
|
|
// case 1: // EvArrayString
|
|
// return tag("arraystring", result._0);
|
|
// case 2: // EvBool
|
|
// return tag("boolean", result._0);
|
|
// case 3: // EvCall
|
|
// return tag("call", result._0);
|
|
// case 4: // EvDistribution
|
|
// return tag(
|
|
// "distribution",
|
|
// new Distribution(
|
|
// convertRawDistributionToGenericDist(result._0),
|
|
// environment
|
|
// )
|
|
// );
|
|
// case 5: // EvDistribution
|
|
// return tag("lambda", result._0);
|
|
// case 6: // EvNumber
|
|
// return tag("number", result._0);
|
|
// case 7: // EvRecord
|
|
// return tag(
|
|
// "record",
|
|
// _.mapValues(result._0, (x) => convertRawToTypescript(x, environment))
|
|
// );
|
|
// case 8: // EvString
|
|
// return tag("string", result._0);
|
|
// case 9: // EvSymbol
|
|
// return tag("symbol", result._0);
|
|
// case 10: // EvDate
|
|
// return tag("date", result._0);
|
|
// case 11: // EvTimeDuration
|
|
// return tag("number", result._0);
|
|
// case 12: // EvDeclaration
|
|
// return tag("lambdaDeclaration", {
|
|
// fn: result._0.fn,
|
|
// args: result._0.args.map(convertDeclaration),
|
|
// });
|
|
// case 13: // EvSymbol
|
|
// return tag("typeIdentifier", result._0);
|
|
// case 14: // EvModule
|
|
// return tag(
|
|
// "module",
|
|
// _.mapValues(result._0, (x) => convertRawToTypescript(x, environment))
|
|
// );
|
|
// }
|
|
// }
|
|
|
|
// function convertDeclaration(
|
|
// declarationArg: rescriptDeclarationArg
|
|
// ): declarationArg {
|
|
// switch (declarationArg.TAG) {
|
|
// case 0: // Float
|
|
// return tag("Float", { min: declarationArg.min, max: declarationArg.max });
|
|
// case 1: // Date
|
|
// return tag("Date", { min: declarationArg.min, max: declarationArg.max });
|
|
// }
|
|
// }
|
|
|
|
// Umur: opaque type no conversion!
|
|
// function convertRawDistributionToGenericDist(
|
|
// result: rescriptDist
|
|
// ): genericDist {
|
|
// switch (result.TAG) {
|
|
// case 0: // Point Set Dist
|
|
// switch (result._0.TAG) {
|
|
// case 0: // Mixed
|
|
// return tag("PointSet", tag("Mixed", result._0._0));
|
|
// case 1: // Discrete
|
|
// return tag("PointSet", tag("Discrete", result._0._0));
|
|
// case 2: // Continuous
|
|
// return tag("PointSet", tag("Continuous", result._0._0));
|
|
// }
|
|
// case 1: // Sample Set Dist
|
|
// return tag("SampleSet", result._0);
|
|
// case 2: // Symbolic Dist
|
|
// return tag("Symbolic", result._0);
|
|
// }
|
|
// }
|
|
|
|
// export type jsValue =
|
|
// | string
|
|
// | number
|
|
// | jsValue[]
|
|
// | { [key: string]: jsValue }
|
|
// | boolean;
|
|
|
|
// export function jsValueToBinding(value: jsValue): rescriptExport {
|
|
// if (typeof value === "boolean") {
|
|
// return { TAG: 2, _0: value as boolean };
|
|
// } else if (typeof value === "string") {
|
|
// return { TAG: 8, _0: value as string };
|
|
// } else if (typeof value === "number") {
|
|
// return { TAG: 6, _0: value as number };
|
|
// } else if (Array.isArray(value)) {
|
|
// return { TAG: 0, _0: value.map(jsValueToBinding) };
|
|
// } else {
|
|
// // Record
|
|
// return { TAG: 7, _0: _.mapValues(value, jsValueToBinding) };
|
|
// }
|
|
// }
|
|
|
|
// export function jsValueToExpressionValue(value: jsValue): expressionValue {
|
|
// if (typeof value === "boolean") {
|
|
// return { tag: "EvBool", value: value as boolean };
|
|
// } else if (typeof value === "string") {
|
|
// return { tag: "EvString", value: value as string };
|
|
// } else if (typeof value === "number") {
|
|
// return { tag: "EvNumber", value: value as number };
|
|
// } else if (Array.isArray(value)) {
|
|
// return { tag: "EvArray", value: value.map(jsValueToExpressionValue) };
|
|
// } else {
|
|
// // Record
|
|
// return {
|
|
// tag: "EvRecord",
|
|
// value: _.mapValues(value, jsValueToExpressionValue),
|
|
// };
|
|
// }
|
|
// }
|