Merge pull request #39 from QURIresearch/mm-too-many-weights
Fix mm crashing on too many weights
This commit is contained in:
commit
7ccaf6c882
|
@ -2,14 +2,18 @@ import { run } from '../src/js/index';
|
||||||
|
|
||||||
describe("A simple result", () => {
|
describe("A simple result", () => {
|
||||||
test("mean(normal(5,2))", () => {
|
test("mean(normal(5,2))", () => {
|
||||||
expect(run("mean(normal(5,2))")).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 5 } ] });
|
expect(run("mean(normal(5,2))")).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 5 } ] })
|
||||||
});
|
})
|
||||||
test("10+10", () => {
|
test("10+10", () => {
|
||||||
let foo = run("normal(5,2)");
|
let foo = run("10 + 10")
|
||||||
expect(1).toEqual(1);
|
expect(foo).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 20 } ] })
|
||||||
});
|
})
|
||||||
test("log(1) = 0", () => {
|
test("log(1) = 0", () => {
|
||||||
let foo = run("log(1)");
|
let foo = run("log(1)")
|
||||||
expect(foo).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 0} ]});
|
expect(foo).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 0} ]})
|
||||||
|
})
|
||||||
|
test("mm(0,0,[0,0,0])", () => {
|
||||||
|
let foo = run("mm(0,0,[0,0,0])")
|
||||||
|
expect(foo).toEqual({ "tag": "Error", "value": "Function multimodal error: Too many weights provided" })
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
|
@ -125,8 +125,10 @@ module Multimodal = {
|
||||||
->E.R.bind(TypeSystem.TypedValue.toArray)
|
->E.R.bind(TypeSystem.TypedValue.toArray)
|
||||||
->E.R.bind(r => r |> E.A.fmap(TypeSystem.TypedValue.toFloat) |> E.A.R.firstErrorOrOpen)
|
->E.R.bind(r => r |> E.A.fmap(TypeSystem.TypedValue.toFloat) |> E.A.R.firstErrorOrOpen)
|
||||||
|
|
||||||
E.R.merge(dists, weights) |> E.R.fmap(((a, b)) =>
|
E.R.merge(dists, weights) -> E.R.bind(((a, b)) =>
|
||||||
E.A.zipMaxLength(a, b) |> E.A.fmap(((a, b)) => (a |> E.O.toExn(""), b |> E.O.default(1.0)))
|
E.A.length(b) > E.A.length(a) ?
|
||||||
|
Error("Too many weights provided") :
|
||||||
|
Ok(E.A.zipMaxLength(a, b) |> E.A.fmap(((a, b)) => (a |> E.O.toExn(""), b |> E.O.default(1.0))))
|
||||||
)
|
)
|
||||||
| _ => Error("Needs items")
|
| _ => Error("Needs items")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user