Operator Overloading in F#

Some Operator Overloads are not recognised by F#, in particular the comparison operators "<.<=,==,>,>=" are not recognised when used to compare Variable<'a> with either Variable<'a> or type 'a. For example when trying to compare Variable<float> with a float value which occurs in the truncated Gaussian tutorial. The rewritten operators contained in the module Operators and are given names such as " >>" to represent the overloaded Greater Than operator. Other operators are "<<" to represent the overloaded Less Than operator, "==" to represent the overloaded Equality operator, "<<==" to represent the overloaded strictly Less Than operator and ">>==" to represent the overloaded Strictly Greater Than operator. The overloaded Greater than Operator is used in the Efficient truncated Gaussian tutorial as shown below:

// The Model
let
threshold = (Variable.New<float>()).Named("threshold")
let
x = Variable.GaussianFromMeanAndVariance(0.0,1.0).Named("x")

do Variable.ConstrainTrue(x >> threshold)

// The inference, looping over different thresholds
let ie = InferenceEngine()
ie.ShowProgress <-
false
threshold.ObservedValue <- -0.1

for i = 0 to 10 do
    threshold.ObservedValue <- threshold.ObservedValue + 0.1 
    printfn
"Dist over x given thresh of %A = %A" threshold.ObservedValue (ie.Infer<Gaussian>(x))

©2009-2014 Microsoft Corporation. All rights reserved.  Terms of Use | Trademarks | Privacy Statement