Наш профессор попросил нас подумать о функции в OCaml, которая имеет тип
'a -> 'b
т.е. функция одного аргумента, которая может быть чем угодно, и которая может возвращать что угодно другое.
Я думал об использовании raise
в функции, которая игнорирует ее аргумент:
let f x = raise Exit
Но профессор сказал, что есть решение, которое не требует каких-либо функций в стандартной библиотеке. Я в замешательстве: как вы можете сделать это, 'b
если у вас его нет вообще?
Я спрашиваю здесь, а не о переполнении стека, потому что я хочу понять, что происходит, я не хочу просто видеть программу без объяснения причин.
raise
будет работать, поэтому мы знаем, как лучше всего объяснить, почему работает решение, которое ищет ваш профессор (которое будет работать по тем же причинам, что и raise
работает).
raise : exn -> 'a
чтобы я мог получить возвращаемое значение, я просто игнорирую аргумент.