estoy empezando aprender Ocaml, utilizando hickey book, y yo estoy atascado en el Ejercicio 3.4, parte 9¿Cómo funciona el alcance variable de Ocaml?
let x x = x + 1 in x 2
El resultado de la operación es 3
, pero yo no entiendo por qué?
estoy empezando aprender Ocaml, utilizando hickey book, y yo estoy atascado en el Ejercicio 3.4, parte 9¿Cómo funciona el alcance variable de Ocaml?
let x x = x + 1 in x 2
El resultado de la operación es 3
, pero yo no entiendo por qué?
Cuando se escribe let x x = ...
está definiendo una función llamada x
que se une el nombre x
a su argumento.
Desde que utilizó en lugar de let
let rec
, la función no conoce su propio nombre, por lo que la medida de lo que sabe, el único x
vale la pena conocer es el que se pasa como un argumento.
Por lo tanto, cuando se llama a la función con x 2
, se une el valor 2
al nombre x
y evalúa x+1
, obteniendo como resultado 3
.
Gracias, no sabía que una función y un argumento podrían tener el mismo nombre. – bbaja42
Pueden, pero obviamente deben ** nunca, nunca ** hacer esto en código real :) (De hecho, esto incluso funciona con 'let rec' en lugar de' let', y tiene el potencial de ser aún más confuso ... .) –
Es más fácil ver por qué esto es posible cuando te das cuenta de que 'let xx = e' es solo una abreviatura de' let x = (fun x -> e) '. –