Size: a a a

(F|R|FR)P - русскоговорящее сообщество

2019 May 02

呼ば in (F|R|FR)P - русскоговорящее сообщество
интересно сколько платят на таких проектах
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Народ! Возможно ли на функциональных языках типа clojure создавать объекты с множеством методов?
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Я никогда пока не писал ни на одном чисто функциональном языке. А сейчас на работе подвернулась возможность полностью переписать один громоздкий js-компонент на чем угодно. Всегда с интересом поглядывал на clojure, а теперь появилась возможность с ней поиграться в деле. Но правда пока не знаю подходит ли она для такой задачи.
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
если интересует возможность создавать полиморфные ф-ции, то один из механизмов в кложе это "протоколы"
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Vasiliy Yorkin
если интересует возможность создавать полиморфные ф-ции, то один из механизмов в кложе это "протоколы"
У нас есть js-библиотека создающая объект с множеством методов. Мне нужно ее переписать. Есть возможность сделать это на любом языке.
Реально ли сделать объект с множеством методов на clojure?
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
У него должен сохраниться API.
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
конечно, только это будет не объект с множеством методов, а множество ф-ций, которые работают с объектами определенного типа
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Vasiliy Yorkin
конечно, только это будет не объект с множеством методов, а множество ф-ций, которые работают с объектами определенного типа
Если в упрощённом виде, то этот объект состоит из массы геттеров и сеттеров. И хранит много состояний. На clojure легко сделать такой контейнер?
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Для внешнего кода это должно по прежнему выглядеть как один объект с кучей сеттеров.
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
да, это легко делается
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Vasiliy Yorkin
да, это легко делается
За счёт чего создаётся такой контейнер с кучей методов? По каким словам мне погуглить хотя бы )
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Я имею в виду не книгу а название термина в clojure который может создавать такой контейнер.
Это какой-то атом там или что?
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
если нужно мутабельное состояние, то в кложе это называется atom
про протоколы и пользовательские типы данных можно почитать в оф. документации https://clojure.org/reference/protocols
https://clojure.org/reference/datatypes

https://cljs.github.io/api/cljs.core/deftype
https://cljs.github.io/api/cljs.core/defprotocol
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Ок. Гляну. В итоге мне нужен объект который снаружи будет выглядеть как:

obj.setSomething(true)
obj.getSomething()
obj.....
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Я просто пока не видел как в clojure куча функций объединяются в одну сущность где их можно вызывать через имя этой сущности из стороннего js-кода
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
можно загуглить как "clojurescript javascript interop"
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Vasiliy Yorkin
если нужно мутабельное состояние, то в кложе это называется atom
про протоколы и пользовательские типы данных можно почитать в оф. документации https://clojure.org/reference/protocols
https://clojure.org/reference/datatypes

https://cljs.github.io/api/cljs.core/deftype
https://cljs.github.io/api/cljs.core/defprotocol
Ох ты ссылок накидал. Я думал что можно на этот вопрос ответить названием конкретного термина ) Ну типа "неймспейс" там какой-нибудь или как-то ещё это должно называться ) что позволяет объединять функции как блок из методов объекта )
источник

VY

Vasiliy Yorkin in (F|R|FR)P - русскоговорящее сообщество
просто делаете атомы с мутабельным состоянием, рядом пишете ф-ции, всё это в неймспейс какой-то типа (ns foo.bar)
ещё по-моему надо писать ^:export перед именем ф-ции
и в жс это всё должно быть доступно как foo.bar.yourFunction(...)
источник

V

Vadim in (F|R|FR)P - русскоговорящее сообщество
Vasiliy Yorkin
просто делаете атомы с мутабельным состоянием, рядом пишете ф-ции, всё это в неймспейс какой-то типа (ns foo.bar)
ещё по-моему надо писать ^:export перед именем ф-ции
и в жс это всё должно быть доступно как foo.bar.yourFunction(...)
Спасибо! Хотел примерно пока понять подходит ли clojure для такой задачи прежде чем браться за нее )
Теперь вижу что такое сделать можно )
источник