Проблема не нова в stackoverflow, но я не могу понять поведение привязки let
к шаблонам и ключевому слову in
. Мой textbook предпочитает формат необычное определение функции:F # let binding patterns
let foo = fun x -> let f = (fun x y -> x +y) in f x
Так что я перевел в #light синтаксис:
let foo x =
let f y =
x + y
f x
Если я устанавливаю foo 4
возвращает меня 8
. Зачем? Я не могу понять, что на самом деле происходит внутри функции, даже с изящными объяснениями от here. Почему 4
становится аргументом как для x
, так и для y
?