Если очень умозрительно, то составляют систему уравнений типовых выражений и решают её. Если вызываешь pure для монады Effect a, то можно понять, что в этом месте f равно Effect.
Если для системы существует единственное решение, то типы считаются выведенными
На самом деле я тут немного наврал. На типах существует частичный порядок, и типы считаются выведенными, если множество решений типовой системы уравнения не пусто, и у него существует минимальный элемент.
P.S. Извиняюсь за занудство, но у меня свербит от того, что я неточность допустил :(