type Overloads = Overloads with
static member ($) (Overloads, m1: #IMeasurable) = fun (m2: #IMeasurable) -> m1.Measure + m2.Measure
static member ($) (Overloads, m1: int) = fun (m2: #IMeasurable) -> m1 + m2.Measure
let inline ( |+| ) m1 m2 = (Overloads $ m1) m2
Not tested, since I don’t have IMeasurable, but it may do the job.