builtin.js (3124B)
1 import { makeDefinition } from "../library/registry/fnDefinition.js"; 2 import { frAny, frArray, frBool, frNumber, frString, } from "../library/registry/frTypes.js"; 3 import { FnFactory } from "../library/registry/helpers.js"; 4 import { vArray, vBool, vString, isEqual } from "../value/index.js"; 5 const maker = new FnFactory({ 6 nameSpace: "", 7 requiresNamespace: false, 8 }); 9 export const library = [ 10 maker.nn2n({ name: "add", fn: (x, y) => x + y }), 11 maker.ss2s({ name: "add", fn: (x, y) => x + y }), 12 maker.nn2n({ name: "subtract", fn: (x, y) => x - y }), 13 maker.nn2n({ name: "multiply", fn: (x, y) => x * y }), 14 maker.nn2n({ name: "divide", fn: (x, y) => x / y }), 15 maker.nn2n({ name: "pow", fn: (x, y) => Math.pow(x, y) }), 16 maker.nn2b({ name: "smaller", fn: (x, y) => x < y }), 17 maker.nn2b({ name: "smallerEq", fn: (x, y) => x <= y }), 18 maker.nn2b({ name: "larger", fn: (x, y) => x > y }), 19 maker.nn2b({ name: "largerEq", fn: (x, y) => x >= y }), 20 maker.bb2b({ name: "or", fn: (x, y) => x || y }), 21 maker.bb2b({ name: "and", fn: (x, y) => x && y }), 22 maker.n2n({ name: "unaryMinus", fn: (x) => -x }), 23 maker.make({ 24 name: "not", 25 definitions: [ 26 makeDefinition([frNumber], ([x]) => { 27 return vBool(x !== 0); 28 }), 29 makeDefinition([frBool], ([x]) => { 30 return vBool(!x); 31 }), 32 ], 33 }), 34 maker.make({ 35 name: "concat", 36 definitions: [ 37 makeDefinition([frString, frString], ([a, b]) => { 38 return vString(a + b); 39 }), 40 makeDefinition([frArray(frAny), frArray(frAny)], ([a, b]) => { 41 return vArray([...a, ...b]); 42 }), 43 makeDefinition([frString, frAny], ([a, b]) => { 44 return vString(a + b.toString()); 45 }), 46 ], 47 }), 48 maker.make({ 49 name: "add", 50 definitions: [ 51 makeDefinition([frString, frAny], ([a, b]) => { 52 return vString(a + b.toString()); 53 }), 54 ], 55 }), 56 maker.make({ 57 name: "equal", 58 definitions: [ 59 makeDefinition([frAny, frAny], ([a, b]) => { 60 return vBool(isEqual(a, b)); 61 }), 62 ], 63 }), 64 maker.make({ 65 name: "unequal", 66 definitions: [ 67 makeDefinition([frAny, frAny], ([a, b]) => { 68 return vBool(!isEqual(a, b)); 69 }), 70 ], 71 }), 72 maker.make({ 73 name: "typeOf", 74 definitions: [ 75 makeDefinition([frAny], ([v]) => { 76 return vString(v.publicName); 77 }), 78 ], 79 }), 80 maker.make({ 81 name: "inspect", 82 definitions: [ 83 makeDefinition([frAny], ([value]) => { 84 console.log(value); 85 return value; 86 }), 87 makeDefinition([frAny, frString], ([value, label]) => { 88 console.log(`${label}: ${value.toString()}`); 89 return value; 90 }), 91 ], 92 }), 93 ]; 94 //# sourceMappingURL=builtin.js.map