Ok, so can someone explain to me why F# allows you to overload the > and ^ operators, but doesn\'t allow you to use them?
+ (op_Addition): Works just fine.
^
F# has default meanings for these operator symbols that's reasonable for F#. You can always define your own meanings that shadow the defaults, a la
let (>) x y = ...
For example, you could define this operator to mean "T.operator>(U)" (assuming x has type T and y has type U).
See prim-types.fs in FSharp.Core in the source distribution for the default definitions. (They are non-trivial!)
Given the combination of (1) lack of support for a type-class like mechanism on the CLR (for defining common semantics among a set of otherwise-unrelated types) and (2) the fact that primitive types (like 'int') often need to be special-cased for any programming language implementation (e.g. System.Int32 does not define an operator+ method, but most programming languages choose to behave as though such a method exists), it's hard to imagine any generally interoperable operator stuff across all languages on .Net today. There are a lot of design-trade-offs depending on exactly what a language chooses to do (too many interacting issues to sum up here). In any case, you should be able to call any method from F#, and if the default operator behaviors are undesirable, you can redefine (shadow) the operators to the behaviors you want. If there's a particular scenario you have in mind that you're having trouble to make work, let me know.
EDIT
I added more detail at
http://cs.hubfs.net/forums/thread/10869.aspx