From d3a12eb4e996f745f42fe6efe948bc6b9fddaafc Mon Sep 17 00:00:00 2001 From: Ozzie Gooen Date: Thu, 21 Jul 2022 08:31:46 -0700 Subject: [PATCH] Fixed bug with namespaces --- .../Reducer_Dispatch_BuiltIn_test.res | 8 -------- ...uiggleLibrary_FunctionRegistryLibrary_test.res | 10 ++++++++++ packages/squiggle-lang/package.json | 2 +- .../FunctionRegistry/FunctionRegistry_Core.res | 15 ++++++--------- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/squiggle-lang/__tests__/Reducer/Reducer_Dispatch/Reducer_Dispatch_BuiltIn_test.res b/packages/squiggle-lang/__tests__/Reducer/Reducer_Dispatch/Reducer_Dispatch_BuiltIn_test.res index a4cc15b3..f3c92f78 100644 --- a/packages/squiggle-lang/__tests__/Reducer/Reducer_Dispatch/Reducer_Dispatch_BuiltIn_test.res +++ b/packages/squiggle-lang/__tests__/Reducer/Reducer_Dispatch/Reducer_Dispatch_BuiltIn_test.res @@ -17,14 +17,6 @@ describe("builtin", () => { testEval("1-1", "Ok(0)") testEval("2>1", "Ok(true)") testEval("concat('a','b')", "Ok('ab')") - testEval( - "addOne(t)=t+1; toList(Sampleset.map(fromSamples([1,2,3,4,5,6]), addOne))", - "Ok([2,3,4,5,6,7])", - ) - testEval( - "toList(mapSamplesN([fromSamples([1,2,3,4,5,6]), fromSamples([6, 5, 4, 3, 2, 1])], {|x| x[0] > x[1] ? x[0] : x[1]}))", - "Ok([6,5,4,4,5,6])", - ) }) describe("builtin exception", () => { diff --git a/packages/squiggle-lang/__tests__/SquiggleLibrary/SquiggleLibrary_FunctionRegistryLibrary_test.res b/packages/squiggle-lang/__tests__/SquiggleLibrary/SquiggleLibrary_FunctionRegistryLibrary_test.res index 1dcf0471..7a1564f7 100644 --- a/packages/squiggle-lang/__tests__/SquiggleLibrary/SquiggleLibrary_FunctionRegistryLibrary_test.res +++ b/packages/squiggle-lang/__tests__/SquiggleLibrary/SquiggleLibrary_FunctionRegistryLibrary_test.res @@ -17,6 +17,7 @@ describe("FunctionRegistry Library", () => { testEvalToBe("List.last([3,5,8])", "Ok(8)") testEvalToBe("List.reverse([3,5,8])", "Ok([8,5,3])") testEvalToBe("double(x)=2*x; arr=[1,2,3]; List.map(arr, double)", "Ok([2,4,6])") + testEvalToBe("double(x)=2*x; arr=[1,2,3]; map(arr, double)", "Ok([2,4,6])") testEvalToBe("myadd(acc,x)=acc+x; arr=[1,2,3]; List.reduce(arr, 0, myadd)", "Ok(6)") testEvalToBe("change(acc,x)=acc*x+x; arr=[1,2,3]; List.reduce(arr, 0, change)", "Ok(15)") testEvalToBe("change(acc,x)=acc*x+x; arr=[1,2,3]; List.reduceReverse(arr, 0, change)", "Ok(9)") @@ -60,6 +61,15 @@ describe("FunctionRegistry Library", () => { testEvalToBe("Dist.logScore({estimate: normal(5,2), answer: 4.5})", "Ok(1.6433360626394853)") testEvalToBe("Dist.klDivergence(normal(5,2), normal(5,1.5))", "Ok(0.06874342818671068)") testEvalToBe("Sampleset.fromList([3,5,2,3,5,2,3,5,2,3,3,5])", "Ok(Sample Set Distribution)") + testEvalToBe("Sampleset.fromList([3,5,2,3,5,2,3,5,2,3,3,5])", "Ok(Sample Set Distribution)") + testEvalToBe( + "addOne(t)=t+1; Sampleset.toList(Sampleset.map(Sampleset.fromList([1,2,3,4,5,6]), addOne))", + "Ok([2,3,4,5,6,7])", + ) + testEvalToBe( + "toList(Sampleset.mapN([Sampleset.fromList([1,2,3,4,5,6]), Sampleset.fromList([6, 5, 4, 3, 2, 1])], {|x| x[0] > x[1] ? x[0] : x[1]}))", + "Ok([6,5,4,4,5,6])", + ) }) describe("Fn auto-testing", () => { diff --git a/packages/squiggle-lang/package.json b/packages/squiggle-lang/package.json index 3dd90839..52c9f07c 100644 --- a/packages/squiggle-lang/package.json +++ b/packages/squiggle-lang/package.json @@ -15,9 +15,9 @@ "start": "rescript build -w -with-deps", "clean": "rescript clean && rm -rf dist", "test:reducer": "jest __tests__/Reducer*/", - "test:current": "jest __tests__/SquiggleLibrary/SquiggleLibrary_FunctionRegistryLibrary_test.bs.js", "benchmark": "ts-node benchmark/conversion_tests.ts", "test": "jest", + "test:lib": "jest __tests__/SquiggleLibrary/SquiggleLibrary_FunctionRegistryLibrary_test.bs.js", "test:ts": "jest __tests__/TS/", "test:rescript": "jest --modulePathIgnorePatterns=__tests__/TS/*", "test:watch": "jest --watchAll", diff --git a/packages/squiggle-lang/src/rescript/FunctionRegistry/FunctionRegistry_Core.res b/packages/squiggle-lang/src/rescript/FunctionRegistry/FunctionRegistry_Core.res index f1dde98b..f4864531 100644 --- a/packages/squiggle-lang/src/rescript/FunctionRegistry/FunctionRegistry_Core.res +++ b/packages/squiggle-lang/src/rescript/FunctionRegistry/FunctionRegistry_Core.res @@ -280,11 +280,11 @@ module Matcher = { module RegistryMatch = { type match = { - namespace: option, + namespace: string, fnName: string, inputIndex: int, } - let makeMatch = (namespace: option, fnName: string, inputIndex: int) => { + let makeMatch = (namespace: string, fnName: string, inputIndex: int) => { namespace: namespace, fnName: fnName, inputIndex: inputIndex, @@ -303,7 +303,7 @@ module Matcher = { let fullMatch = functionMatchPairs->E.A.getBy(((_, match)) => Match.isFullMatch(match)) fullMatch->E.O.bind(((fn, match)) => switch match { - | FullMatch(index) => Some(RegistryMatch.makeMatch(namespace, fn.name, index)) + | FullMatch(index) => Some(RegistryMatch.makeMatch(fn.nameSpace, fn.name, index)) | _ => None } ) @@ -326,7 +326,7 @@ module Matcher = { ->E.A2.fmap(((fn, match)) => switch match { | SameNameDifferentArguments(indexes) => - indexes->E.A2.fmap(index => RegistryMatch.makeMatch(namespace, fn.name, index)) + indexes->E.A2.fmap(index => RegistryMatch.makeMatch(fn.nameSpace, fn.name, index)) | _ => [] } ) @@ -355,10 +355,7 @@ module Matcher = { ): option => registry.functions ->E.A.getBy(fn => { - switch namespace { - | Some(ns) => ns === fn.nameSpace && fnName === fn.name - | _ => fnName === fn.name - } + namespace === fn.nameSpace && fnName === fn.name }) ->E.O.bind(fn => E.A.get(fn.definitions, inputIndex)) } @@ -511,7 +508,7 @@ module Registry = { `There are function matches for ${fnName}(), but with different arguments: ${defs}` } - let match = Matcher.Registry.findMatches(modified, fnName, args) + // let match = Matcher.Registry.findMatches(modified, fnName, args); Js.log2("Match", match) switch Matcher.Registry.findMatches(modified, fnName, args) { | Matcher.Match.FullMatch(match) =>