let x = 2;;
let x = 3
in let y = x +1
in x + 1;;
let x = 3 and y = x + 1
in x + y;;
Os resultados são ordenados respectivamente para cada expressão:
val x : int = 2
- : int = 7
- : int = 6
Você pode me ajudar a entender por que a última expressão é igual a 6? É difícil para mim entender.
Eu executo esse código no tryOCamlpro.
O primeiro é autoexplicativo.
O segundo deve avisá-lo que
y
is unused.x
é3
, entãox + 1
é4
. Seu resultado observado de7
sugere que o código que você nos mostrou não é realmente o que você avaliou.Para o terceiro, vamos tentar algo um pouco diferente:
Huh. Vamos iniciar um ambiente de intérprete limpo e tentar isso:
A partir disso, podemos ver que a definição de
y
não estava usando ox
definido como,3
mas sim a definição anteriorx
de como2
.Você provavelmente queria:
As construções
let ... and ...
orlet ... and ... in ...
são realmente úteis apenas para funções mutuamente recursivas.