Learning functional programming is not about applying what you know from imperative and object-oriented programming and leveraging that to learn functional programming. In your question you are asking what to avoid, when I believe you should be thinking is: To learn functional programming I realize I should totally set aside what I know about imperative programming; where should I start.
As some starting advice see How to make the transition to functional programming?How to make the transition to functional programming?
So don't convert imperative code to functional code. If an algorithm is amiable to functional programming then use functional programming. If an algorithm is amiable to imperative programming then use imperative programming.
To answer your question more specifically
- Instead of [selection statements] 2 use pattern matching.
- Instead of iteration statements use recursion.
- Instead of objects use discriminated unions.
- Instead of .NET collections, use F# types such as F# list (which are different from .NET list), tuples, etc. Note: objects are based on classes which are typically heap based and preserve state while F# types are based on structures which are typically stack based, are optimized for use with F#, and typically immutable.
In the object-oriented world objects are king, in the functional world functions are king.