metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-11-28 07:16 pm
Entry tags:

Обработка элемента множества в контексте "соседей"

Вот тут http://levgem.livejournal.com/420910.html задают вопрос, который меня тоже сильно интересует - есть ли такая высокоуровневая операция, которая бы позволила абстрагировать обработку элемента (упорядоченного) множества в контексте взаимодействия этого элемента с его соседями.
Вроде [livejournal.com profile] antilamer что-то похожее писал про комонады, но мне без конкретной задачи сложно осознать, как это использовать.
Вот например map, filter, fold - я их понял от входа, потому что очевидная аналогия с SQL запросами - select, where, group by (и прочие агрегаты).
У обработки в контексте понятная мне аналогия - это, например, window functions в SQL, скользящее среднее, интеграторы-дифференциаторы и прочие фильтры-свертки в DSP, но вот их я внятным образом с функциональщиной сопоставить не могу.

PS: клеточные автоматы и комонады: http://blog.sigfpe.com/2006/12/evaluating-cellular-automata-is.html Клеточный автомат тоже подвид фильтра поверх скользящего окна.
И функции поверх потоков: http://blog.sigfpe.com/2006/06/monads-kleisli-arrows-comonads-and.html

[identity profile] lomeo.livejournal.com 2012-11-28 08:08 pm (UTC)(link)
Какая из них? (Мы же про задачу [livejournal.com profile] levgem?)

[identity profile] antilamer.livejournal.com 2012-11-28 08:12 pm (UTC)(link)
Я про "window functions в SQL, скользящее среднее, интеграторы-дифференциаторы и прочие фильтры-свертки в DSP". Как это на задачу [livejournal.com profile] levgem ложится, не знаю :)

[identity profile] metaclass.livejournal.com 2012-11-28 08:19 pm (UTC)(link)
Да так же и ложится - из элемента и его соседей делается "элемент с указателями на соседей". Это тот же фильтр.

[identity profile] lomeo.livejournal.com 2012-11-28 09:00 pm (UTC)(link)
Для его задачи и зиппера хватает ;-)

Только причём тут комонады? Ведь когда говорят "монада", "комонада", имеют в виду соответствующие функции, а не структуры данных, верно? Т.е. монада список — это concatMap, удобный liftM2 и т.д.

Тут-то вроде ничего подобного не нужно.

[identity profile] lomeo.livejournal.com 2012-11-28 08:09 pm (UTC)(link)
А, ты про зиппер, наверное. В общем, я не о том, проехали.