Size: a a a

Clojure — русскоговорящее сообщество

2021 July 24

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
мы вроде тут эту тему уже обсуждали, но одна и важных характеристик ФП языка это function is first class citizen
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
функции можно возвращать из функций, передавать как значения, создаваться на ходу
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
дальше, функции можно объявлять самостоятельно, без там классов / модуйлей (руби джава пока тут)
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
да я хз. бугаенко делает, но где бугаенко, а где реал.
суть вообще не в этом, на самом деле.
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Если бы ещё архитектурные особенности людей учитывал
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
это не чистая функция, потому что value это значение получаемое из контекста вне передаваемых параметров
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
то есть contex matters здесь
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
м, то есть, ни одно замыкание не является чистой функцией, так и запишем.
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
ну смотри, я могу вызвать всередине

vat intHolder = new IntHolder(10)
intHolder.add(20) => 30
intHoldet.setValue(100)
intHolder.add(20) => 120

выдаст другое значение
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
откуда у тебя взялся setValue?..
источник

A

Andrey in Clojure — русскоговорящее сообщество
это, насколько я понимаю, одна из самых примитивных характеристик ФП. В ранние годы, ЛИСП считался ФП как раз из-за того что там можно было возвращать функции из функций, но сейчас это умеют почти все языки. Гораздо важнее функциональный менеджмент стейта и упор на работу с неизменяемыми данными, а так же минимизация сайд эффектов. Возвращение функций из функций и передача их в оные это только малая часть всей идеи
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
да бляцкое ООП с сеттерами и геттрами, разве нет?
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
ок, исправлюсь - private final value.
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
не было у меня никакого сеттера
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Value все равно первым параметром передаётся в add в виде this.value (может неявно) или как-то так.
Так что формально получается, что add всё-таки совершенно чистая.
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
ну ладно
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
прямо все так умеют?

неизменяемые данные, тайпклассы это не делает языком ФП само по себе, но в целом скорее да
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
руби точно не умеет, насчет джавы не знаю, питон? го?
источник

A

Andrey in Clojure — русскоговорящее сообщество
почти все != прямо все
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
а с неизменяемыми данными в js сложно, ща если найду твит Дэна Абрамова
источник