Hi Casper,
this is purely convention, but personally I do think it helps discoverability to have the type and the module with handlers with the same name.
To avoid the name collision issues, you can do the following which is how a lot of the modules in the core libraries are declared
type Thing = Thing of string
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Thing =
let create str = Thing str
This gives the type and module unique names in IL, but allows them both to be accessed from F# code with the same name.
Thanks,
Michael