Парсер F # обрабатывает именованные аргументы как выражения проверки равенства; более поздняя стадия компилятора декодирует их в именованные аргументы. Таким образом, это проблема приоритета, описанная @ desco.
Обратите внимание, что если у вас есть логический именованный параметр, вы можете сделать, например,
F(a = true) // named param
F((a = true)) // compare local name 'a', then pass boolean as first arg
как способ устранения неоднозначности в редких случаях, когда это необходимо.