Программирование функций и макет объектов

Я недавно смотрел веб-трансляцию по Clojure. В ней докладчик сделал комментарий в контексте обсуждения FP-природы Clojure, которая выглядела примерно (я надеюсь, что я не искажаю его) «Насмешливые объекты насмехаются над вами».

Я также слышал аналогичный комментарий некоторое время назад, когда Я наблюдал за веб-трансляцией, когда Microsoft Reactive Framework начинал появляться, и звучал примерно так: «Поддельные объекты для тех, кто не знает математику». )

Теперь я знаю, что оба комментария - это шутки / насмешки и т. Д. И т. Д. (И, вероятно, они плохо перефразированы), но в основе их, очевидно, лежит что-то концептуальное, чего я не понимаю, поскольку на самом деле я не сделал переход парадигма FP.

Итак, я был бы признателен, если бы кто-то мог объяснить, действительно ли FP делает насмешку избыточной, и если да, то как.

13
задан tshepang 14 May 2014 в 22:57
поделиться

1 ответ

В чистом FP ​​у вас есть ссылочно-прозрачные функции, которые вычисляют один и тот же результат каждый раз, когда вы вызываете их с одним и тем же входом. Поэтому все необходимое состояние должно быть явно передано в качестве параметров и выведено в качестве результатов функции, нет объектов с состоянием, которые каким-то образом «спрятаны за» вызываемой вами функцией. Это, однако, то, что обычно делают ваши фиктивные объекты: имитируют какое-то внешнее, скрытое состояние или поведение, на которое опирается тестируемый объект.

Другими словами: OO: Ваши объекты сочетают в себе связанное состояние и поведение. Чистый FP: состояние — это то, что вы передаете между функциями, которые сами по себе не имеют состояния и полагаются только на другие функции без состояния.

10
ответ дан 1 December 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: