Size: a a a

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

2020 February 07

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
трансдьюсеры могут иметь внутреннее состояние, и это нормально
как впрочем и любая трансформирующая или свёрточная функция
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
akater
А захватывать это внутренее состояние извне считается неприлично?

(В Ваше последнее решение я пока не въехал.)
«(В Ваше последнее решение я пока не въехал.)»
я даже не знаю, решение ли это, так как я не въехал в задачу 😊
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
akater
А захватывать это внутренее состояние извне считается неприлично?

(В Ваше последнее решение я пока не въехал.)
«А захватывать это внутренее состояние извне»

это как?
вот distinct ведёт учёт выпущенных элементов
это «захват извне» или ещё нет?

take просто считает элементы до заданного лимита
это как, «захват»?

мне непонятна используемая терминология, поэтому я собственно и «не въезжаю в задачу»
источник

a

akater in Clojure — русскоговорящее сообщество
Sergey Trofimov
«А захватывать это внутренее состояние извне»

это как?
вот distinct ведёт учёт выпущенных элементов
это «захват извне» или ещё нет?

take просто считает элементы до заданного лимита
это как, «захват»?

мне непонятна используемая терминология, поэтому я собственно и «не въезжаю в задачу»
Захват в смысле variable capture (терминология Common Lisp). Можно говорить просто про «чтение внутреннего параметра трансдьюсера» — допустимо это в Clojure или нет.
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Andrey Ivanov
Она перестает быть чистой из-за рандома и отсутствия ссылочной прозрачности. Но в нечистых ФЯ типа Кложи это не редкость, как уже писали выше
Разве может быть какая-то функция чистой, если она использует рандом?:) Только если туда передается сид.
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Я это и имел в виду. Но похоже, тут вопрос не про чистоту а про банальный стейт, который присутствует и в чистых свертках
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
akater
Захват в смысле variable capture (терминология Common Lisp). Можно говорить просто про «чтение внутреннего параметра трансдьюсера» — допустимо это в Clojure или нет.
можно написать что-угодно, если это требуется для решения задачи
и кложа не сможет программисту ничего запретить
источник

a

akater in Clojure — русскоговорящее сообщество
Andrey Ivanov
Я это и имел в виду. Но похоже, тут вопрос не про чистоту а про банальный стейт, который присутствует и в чистых свертках
Да, речь просто про стейт. Читать стейт трансдьюсера каким-то образом типа того, который я выше написал, — это в Clojure делается?
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Я тоже не понял что вы имеете в виду, но вроде этого нельзя нигде, кроме жс )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
akater
Да, речь просто про стейт. Читать стейт трансдьюсера каким-то образом типа того, который я выше написал, — это в Clojure делается?
ну, трансдьюсеры стандартной библиотеки не обладают такими свойствами
но не вижу проблемы написать такой, что будет использовать переданный ему стейт, то есть стейт будет расшаренным
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Завтра внутренняя реализация ядра свертки поменяется с сохранением апи и все
источник

a

akater in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну, трансдьюсеры стандартной библиотеки не обладают такими свойствами
но не вижу проблемы написать такой, что будет использовать переданный ему стейт, то есть стейт будет расшаренным
Тогда все понятно, спасибо.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
akater
Да, речь просто про стейт. Читать стейт трансдьюсера каким-то образом типа того, который я выше написал, — это в Clojure делается?
трансдьюсер — это просто функция (замыкание), как из неё что-то прочесть...
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
akater
Да, речь просто про стейт. Читать стейт трансдьюсера каким-то образом типа того, который я выше написал, — это в Clojure делается?
можно ещё выдать доступ к внутреннему стейту через мета данные функции трансдьюсера
но в таком коде, боюсь, сложно будет разобраться 😊
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
трансдьюсер — это просто функция (замыкание), как из неё что-то прочесть...
Закинуть туда atom 👍
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
тогда уж коллбэк сразу ))
источник

a

akater in Clojure — русскоговорящее сообщество
Sergey Trofimov
трансдьюсер — это просто функция (замыкание), как из неё что-то прочесть...
Например, создавать общий environment при вычислении
(comp (dependent-transducer) (take n))
источник

OK

Oleg Kurbatov in Clojure — русскоговорящее сообщество
https://clojure.org/reference/transducers
В этом референсе написано, что композиция трансдюсеров это даже хорошо.
Ещё там описано про стейт в разделе Transducers with reduction state.
источник

1

1 in Clojure — русскоговорящее сообщество
Добрый день!
Когда будем проводить очередной слёт разработчиков?
источник

1

1 in Clojure — русскоговорящее сообщество
Ваня как насчёт собраться в начале апреля в Москве?
источник