How to deal with implicit casting in F#