type t = GenericDist_Types.genericDist type error = GenericDist_Types.error type toPointSetFn = t => result type toSampleSetFn = t => result, error> type scaleMultiplyFn = (t, float) => result type pointwiseAddFn = (t, t) => result let sampleN: (t, int) => result, error> let fromFloat: float => t let toString: t => string let normalize: t => t let operationToFloat: (toPointSetFn, Operation.distToFloatOperation, t) => result let toPointSet: (t, int) => result let truncate: (toPointSetFn, option, option, t) => result let algebraicCombination: ( toPointSetFn, toSampleSetFn, GenericDist_Types.Operation.arithmeticOperation, t, t, ) => result let pointwiseCombination: ( toPointSetFn, GenericDist_Types.Operation.arithmeticOperation, t, t, ) => result let pointwiseCombinationFloat: ( toPointSetFn, GenericDist_Types.Operation.arithmeticOperation, float, t, ) => result let mixture: (scaleMultiplyFn, pointwiseAddFn, array<(t, float)>) => result