Мне тут, опять же, в комментах выкатили, что определение "каждая функция порождает класс" неконструктивно, абстрактно, и не радует глаз функционального программиста. Ну, радовать глаз я не нанимался, а в остальном отвечу. Ни фи га. Очень конструктивно и конкретно. Давайте посмотрим, какой же ИМЕННО класс порождает функция. (Смотрите - я даже методом её не называю, вот как я бережно к вам отношусь!:)
Давайте рассмотрим функцию, которая передвигает свой аргумент 1 в позицию аргумента 2:
void f(w, x) { w.x = x; }
ну или для фп это будет функция, которая вернёт новый инстанс w такой, что в нём какая-то хрень, хранящая функцию для вычисления x, будет заменена на новую, которую передали в параметре x. это, в данном случае, монофигственно.
какой же такой класс она вводит? Ох, какой-то странный абстрактный непонятный, да? Чёрт, ни фига не вкуриваю, что ж за такой класс. Глупый какой-то. Никому не нужный вредный странный класс. Э. Или нет? Ой. Да это же класс "объекты, имеющие координату x". Типа, любые, какие спозиционированы в некотором, по крайней мере, одномерном пространстве. Странно, да? Неожиданно как-то. И куда ж такие годятся? Ох, чёрт - да это ж всякие окна, кнопки, виджеты... Или типа объекты на игровом поле - ну, то есть, вроде, вполне понятные вещи.
Если добавить y и z, то получается и вообще понятный класс - совершенно осмысленный класс "объекты, имеющие координаты в трёхмерном пространстве".
Это потому, что функция вводит класс не абы как - вот тут я такая родилась, и какой-то класс ввела, а какой - неясно. Она вводит класс в силу факта взаимодействия со свойствами своих аргументов. Функция требует аргументов x, y и z, и ТРАКТУЕТ их как координаты объекта. Тем самым фактом она вводит - требует от нас - наличия класса объектов "объекты с координатами в трёхмерном пространстве", коий совершенно конкретен и осмыслен.
Требует в силу СМЫСЛА производимого ей действия. Не абстрактно, а совершенно конкретно. Если вы хотите иметь функцию "двигать шкафы", то уже помыслив (!) это желание вы определили класс "шкафы" и уточнили, что они обладают свойством "быть двигаемыми", к коему ваша функция и будет аппелировать в процессе работы.
А реализовать его можно и функционально тоже, это да. И даже к-мерно. О, тема: к-мерный конь в вакууме.