что-то ты вот сложное собрал сейчас
для обычных объектов мы говорим, что есть две сущности и их сравнение даёт расстояние в виде числа (int compareTo).
простое решение само напрашивается, если и аргументы такой функции подобны целым числам. То есть, если для любых a и b мы можем выбрать функцию, которая спроецирует их на целые числа. Например, User.getPenisLength():: (User) -> int.
и дальше мы говорим, что раз у нас теперь всё есть целые числа, а они - это линейно упорядоченное множество, то если a <= b, то sup(a,b) = b, а inf(a,b) = a. По сути, copmpareTo здесь и есть inf.
но представим, что у нас такой домен, когда существуют несравнимые элементы. Из твита: "does not depend on any other and cannot be compared by anything". Их уже не спроецировать на числа, потому что числа всегда можно сравнить друг с другом, это тот самый полный линейный порядок. И вот тут inf уже не compareTo:: Pair->Int, а её полная форма, когда она вместо инта должна отдавать compareTo:: Pair->Pair.
пока всё так? :)