Как работает вложенность инструкций in? - PullRequest
0 голосов
/ 05 февраля 2019

Я изо всех сил пытаюсь понять, как работает инструкция "in", у меня экзамен через несколько дней, и хотя я довольно уверенно чувствовал, как работает ocaml, есть много предыдущих экзаменов, которые подводят меня кНасколько я знаю, ocaml является языком статической области видимости, так что если, например, вы объявляете значение и используете его внутри функции (конечно, не передавая его в качестве аргумента), даже если вы перезаписали значение функциейбудет по-прежнему использовать предыдущий, например,

let a = 5;;
let f x = a+x;;
let a = 1;;
f 1;;

Вернет 6, хотя значение a было перезаписано, но на экзамене есть несколько довольно схематичных вопросов, например,

let a = 6 in
let b x = a + x in
let a = 42 in
b a;;

Это меня сильно смущает, как работает "in"?Я знаю, что это возвращает 48, но я изо всех сил пытаюсь увидеть шаблон, который я могу использовать, чтобы понять, как работает область видимости, когда вы используете инструкцию "in".

Любое объяснение будет оценено очень высоко

Заранее спасибо: D

1 Ответ

0 голосов
/ 05 февраля 2019

Вернет 6, даже если значение было перезаписано

Не перезаписано.Вы создаете новую переменную с тем же именем.Т.е. вы не меняете существующую переменную - вы создаете новую, которая скрывает существующую.Что происходит так:

let a1 = 5;;
let f x = a1 + x;;
let a2 = 1;;
f 1;;

То же самое во втором примере:

let a1 = 6 in
let b x = a1 + x in
let a2 = 42 in
b a2;;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...