Shadowing and Nested function
问题 I want to understand how the mechanism of Shadowing and Nested function work. For example: 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 Can someone explain what happen here? 回答1: Your code is equivalent to the following, where I've simply numbered instances of your names to help you visualize how shadowing is occurring. let func y0 = let dup0 y1 = y1 + y1 let z0 = dup0 y0 let