Как вы решаете между написанием функции внутри модуля или как статическим членом какого-либо типа?
Например, в исходном коде F # существует множество типов, которые определены вместе с одинаково именованным модулем, следующим образом:
type MyType = // ...
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module MyType = // ...
Почему бы вам просто не определить операции как статические члены типа MyType?