Size: a a a

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

2020 July 20

A

Artem in Clojure — русскоговорящее сообщество
О, ждемс
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
почему такая дата и время: https://t.me/clojure_ru/123538
источник

((

(fun () -> ()) in Clojure — русскоговорящее сообщество
завидная активность
источник

MB

Mike Bohdan in Clojure — русскоговорящее сообщество
А есть возможность стрима куда-то?
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Mike Bohdan
А есть возможность стрима куда-то?
@niquola ты обещал сделать zoom конфу, там только запись или стрим тоже будет?
источник

RN

Ryzhikov Nikolay in Clojure — русскоговорящее сообщество
Да я сделаю
источник

p

patinity in Clojure — русскоговорящее сообщество
кто #страхует? готов выделить 112р
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Чем больше формулирую эту задачу, тем больше понимаю, что похоже проще просто не допускать появление экзепшенов....
аминь
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
от IndexOutOfBounds оч. хорошо помогает избегание nth.
Например всегда foreach вместо for.
И другие приёмчики.
Отдельная тема: деструктуризация может поднасрать.

Ну сам же знаешь, чё ты?
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
А не, деструктуризация по-другому подсирает:
Когда деструктурируешь объект как sequence, а там не sequence.
Выдаёт: nth not supported on this type
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Я ещё сейчас вот структуру делаю, типа некоторой последовательности. В ней можно найти элемент и можно передав элемент получитьс следующий или предыдущий. Это как двусвязный список

И у меня может быть две ситуации:
(get-next s x) вернет nil когда x был последним в последовательности и после него нет элементов

Либо кинет экзепшен, если x нет в последовательности

Я бы возвращал nil если x нет в последовательности, но тогда это не отличить от того, что последовательность закончилась

Можно сделать отедльную проверку на contains но не хотелось бы лезть в последовательность дважды для получения следующего элемента
источник

RN

Ryzhikov Nikolay in Clojure — русскоговорящее сообщество
::nil ::end-of-list
источник
2020 July 21

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Ryzhikov Nikolay
::nil ::end-of-list
Ну.. Работает и не поспоришь
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Надо покрепче подумать о семантике этой структуры.
Структура какая-то "виртуальная" что ли.
Больше похоже не на "структуру данных", а на часть алгоритма.

Ты ещё не дошёл до случая, когда у тебя структура закольцована?

Подход с ::end-of-list на мой взгляд не ляжет потом на какие-нить функи, которые работают с sequence'ами. И тебе придётся какие-то алгоритмы переизобретать, чего не пришлось бы делать, если бы твоей структурой поддерживалась семантика sequence.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Кажется, что нужно разделить эту тему на две вещи:
1. Дёрнуть структуру, чтобы получить "указатель" на объект, если он есть в структуре
2. Дёрнуть структуру, чтобы переместить указатель на соседний объект (левый или правый)
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
У тебя появятся две функи:
1. Хавает структуру и искомый объект. Возвращает указатель (конечно же помнящий ссылку на саму структуру) или null (если искомого объекта нет в структуре).
2. Хавает указатель и возвращает следующий (предыдущий) объект или null (если достигнут конец).
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Damir Farazetdinov
Надо покрепче подумать о семантике этой структуры.
Структура какая-то "виртуальная" что ли.
Больше похоже не на "структуру данных", а на часть алгоритма.

Ты ещё не дошёл до случая, когда у тебя структура закольцована?

Подход с ::end-of-list на мой взгляд не ляжет потом на какие-нить функи, которые работают с sequence'ами. И тебе придётся какие-то алгоритмы переизобретать, чего не пришлось бы делать, если бы твоей структурой поддерживалась семантика sequence.
Почти дошел. Мне надо еще выдавать как-то информацию о том, что следующий элемент это начало последовательности и произошло "кольцевание"
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Индексировать в общем случае такую последовательность я не могу. Как можно еще указатели делать?
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
А, точно!
Если вторая функа (две функи: next и previous) будет возвращать тоже указатель и будет третья функа get или deref, то получится прям zipper.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
и будешь ты ими пользоваться как-то так:
(def s (build-my-structure))

(def third-item
 (some-> s
   (zipper first-item)
   next
   next
   deref))
источник