Затенение и Вложенная функция
Я хочу понять, как работает механизм Shadowing и Nested function. Например:
let func y =
let dup y = y + y
let z = dup y
let dup y =
let dup z =
let y = y * z
y
let z = y
y
dup z + z;;
val func : int -> int
> func 3;;
val it : int = 12
Может кто-нибудь объяснить, что здесь происходит?