Допустим, я хочу объявить глобальную переменную, используя локальную переменную:
Я могу сделать (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)? Как Окамл пытается проанализировать это выражение?