Very simple implementation of pointset mapY
This commit is contained in:
parent
31d27a97c8
commit
2aaa43008d
|
@ -23,6 +23,31 @@ let inputsTodist = (inputs: array<FunctionRegistry_Core.frValue>, makeDist) => {
|
||||||
expressionValue
|
expressionValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module Internal = {
|
||||||
|
type t = PointSetDist.t
|
||||||
|
|
||||||
|
let toType = (r): result<
|
||||||
|
ReducerInterface_InternalExpressionValue.t,
|
||||||
|
Reducer_ErrorValue.errorValue,
|
||||||
|
> =>
|
||||||
|
switch r {
|
||||||
|
| Ok(r) => Ok(Wrappers.evDistribution(PointSet(r)))
|
||||||
|
| Error(err) => Error(REOperationError(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
let doLambdaCall = (aLambdaValue, list, environment, reducer) =>
|
||||||
|
switch Reducer_Expression_Lambda.doLambdaCall(aLambdaValue, list, environment, reducer) {
|
||||||
|
| Ok(IEvNumber(f)) => Ok(f)
|
||||||
|
| _ => Error(Operation.SampleMapNeedsNtoNFunction)
|
||||||
|
}
|
||||||
|
|
||||||
|
let mapY = (pointSetDist: t, aLambdaValue, env, reducer) => {
|
||||||
|
let fn = r => doLambdaCall(aLambdaValue, list{IEvNumber(r)}, env, reducer)
|
||||||
|
let foo = PointSetDist.T.mapYResult(~fn, pointSetDist)
|
||||||
|
foo->toType
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let library = [
|
let library = [
|
||||||
Function.make(
|
Function.make(
|
||||||
~name="fromDist",
|
~name="fromDist",
|
||||||
|
@ -53,6 +78,26 @@ let library = [
|
||||||
],
|
],
|
||||||
(),
|
(),
|
||||||
),
|
),
|
||||||
|
Function.make(
|
||||||
|
~name="mapY",
|
||||||
|
~nameSpace,
|
||||||
|
~requiresNamespace=true,
|
||||||
|
~examples=[`PointSet.mapY(mx(normal(5,2)), {|x| x + 1})`],
|
||||||
|
~output=ReducerInterface_InternalExpressionValue.EvtDistribution,
|
||||||
|
~definitions=[
|
||||||
|
FnDefinition.make(
|
||||||
|
~name="mapY",
|
||||||
|
~inputs=[FRTypeDist, FRTypeLambda],
|
||||||
|
~run=(inputs, _, env, reducer) =>
|
||||||
|
switch inputs {
|
||||||
|
| [IEvDistribution(PointSet(dist)), IEvLambda(lambda)] => Internal.mapY(dist, lambda, env, reducer)->E.R2.errMap(_ => "")
|
||||||
|
| _ => Error(impossibleError)
|
||||||
|
},
|
||||||
|
(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
(),
|
||||||
|
),
|
||||||
Function.make(
|
Function.make(
|
||||||
~name="makeContinuous",
|
~name="makeContinuous",
|
||||||
~nameSpace,
|
~nameSpace,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user