то есть когда фунция (с одинаковыми типами и одинаковой арностью) в теле модуля прописана два раза, то получается своего рода оператор вида "case": компилятор идёт свеху вниз, анализирует значение переменной (условие "when") и найдя подходящую "версию" функции, исполняет её, так?