f# vers optimized