может кто-нибудь объяснить, почему «ans» обязан оценивать значение 16 здесь после оценки - это правильный ответ?Значение привязок в SML?
Я думал, что ответ 3, так как мы вызываем функцию f и отправляем значения 1 и 2, поскольку функция f также не видит значения 5 и 10, но я думаю, что я ошибаюсь.
val x = 1
val y = 2
val f = fn y => x + y
val x = 5
val y = 10
val ans = f x + y
Судя по вашим недавним вопросам о StackOverflow, рассмотрели ли вы чтение учебника по стандарту ML? Тень привязки значений (а не вызов их переменных) была бы одной из тех неочевидных вещей, которые по-прежнему систематически охватываются в любом достойном учебнике. Вы можете рассмотреть [ML для рабочего программиста] (https://www.amazon.co.uk/ML-Working-Programmer-Larry-Paulson/dp/052156543X). –