Ответ 1
in
является похмелье из корней F # OCaml и задает связанные переменные, которые являются тонко отличными от переменных областей.
Подумайте об изменении переменной следующим образом; У вас есть выражение:
first + " " + second
Поскольку он first
и second
несвязаны - у них нет фиксированных значений, поэтому в настоящее время выражение не имеет конкретного значения. Используя
let (...) in
вы указываете, как эти переменные привязаны в этом выражении, поэтому ваш пример будет использовать замену переменных, чтобы уменьшить эту функцию до
let doStuff x =
x + " " + x
В этом примере обе формы идентичны, но представьте себе следующее:
let (x = 2 and y = x + 2) in
y + x
Это не будет работать так же, как
let (x = 2 and y = x + 2)
y + x
Потому что в первом случае x
привязан только после к in
.
В более позднем случае правила нормального изменения переменных вступают в силу, поэтому переменные привязаны, как только они объявлены.
Надеюсь, что это прояснит ситуацию. В общем, вы всегда должны использовать версию без in
и указывать #light
в начале ваших исходных файлов F #