id
- единственная функция типа a -> a
, и
fst
единственная функция типа (a,b) -> a
. В этих простых случаях это довольно просто видеть. Но в целом, как бы вы это доказали? Что делать, если есть несколько возможных функций одного и того же типа?
В качестве альтернативы, учитывая тип функции, как вы получаете уникальную (если это правда) функцию этого типа?
Изменить: меня особенно интересует, что происходит, когда мы начинаем добавлять ограничения в типы.