Я новичок в sml и пытаюсь понять, как получить тип выражения.
Я прочитал Получение выражения типа в ML, и я пытаюсь повторить то, что он сделал, чтобы получить мое выражение, но я не могу понять один отрывок.
Выражение, которое я пытаюсь вывести:
fn x => fn y => fn z => z(z(y x))
Я делаю следующее:
fn x : T1 => fn y : T2 => fn z : T3 => z(z(y x)) : T4
В этот момент должно быть
T2 = T1 -> T5 //y x
T3 = T5 -> T6 //z(y x)
T3 = T6 -> T7 //z(z(y x))
вот где я думаю, что я делаю ошибку.
Также должно быть ограничение, например
T7 = T4 or T6 = T4.
Я не уверен и не ясен в этом вопросе.
Заранее спасибо за помощь.