Объявление глобальной переменной с использованием локальной переменной - PullRequest
0 голосов
/ 05 сентября 2018

Допустим, я хочу объявить глобальную переменную, используя локальную переменную: Я могу сделать (1)

let y = let x = 1 in x + 1;;

Но теперь, если я это сделаю (2)

let x = 1 in let y = x + 1;;

Кажется, ocaml не понимает этот синтаксис, он останавливается на ;;, но я не понимаю почему, потому что (3)

let x = 1 in 1;;

работает, даже если это бесполезно.

Что происходит в (2)? Как Окамл пытается проанализировать это выражение?

1 Ответ

0 голосов
/ 05 сентября 2018

Большая разница между двумя типами let s заключается в том, что let ... in ... является выражением, а let без in - нет. Теперь часть после in в let ... in ... должна быть выражением, поэтому in less let здесь не допускается - она ​​разрешена только на верхнем уровне модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...