Когда я впервые начал использовать выражение in, я подумал, что оно довольно простое и имеет смысл.Однако эти примеры кода заставили меня усомниться в том, насколько хорошо я их понимаю.
let fun1 x = let fun2 y = y + 1 in fun2(x);;
val fun1 : int -> int = <fun>
Я думаю, это можно представить как объявление fun2, а затем применение его для вызова fun2 с переменной x
, которую вы получаете.от fun1.
let sum1 i = let sum2 j = i+j in sum2;;
val sum1 : int -> int -> int = <fun>
Этот смущает меня гораздо больше и вызывает больше вопросов.Я действительно не знаю, как это интерпретировать.Является ли sum1 объявленным для использования в sum2?Если да, то почему in
применяется к внешней функции, а не к внутренней функции, как это было в первом примере?
Буду признателен за любую помощь в интерпретации этих фрагментов кода.