Rich Hickey's Strange Loop transducers presentation сообщает, что в Clojure 1.6 реализованы две реализации map
, одна для последовательностей в clojure.core
и одна для каналов в core.async
.Может ли core.async реализовать свои функции в терминах последовательностей?
Теперь мы знаем, что в 1,7 раза у нас есть датчики, для которых функция foldr
(reduce
) возвращается из функций высшего порядка, как map
и filter
когда задана функция, но не коллекцию.
Что я пытаюсь сформулировать и терпеть неудачу, почему core.async
функции не могут вернуть последовательность или быть Seq
-like. У меня такое ощущение, что «интерфейсы» (протоколы) разные, но я не вижу, как это сделать.
Несомненно, если вы снимаете первый элемент с канала, вы можете представить это как взятие первого элемента из последовательности?
Мой вопрос: Может ли core.async
реализовать свои функции в терминах последовательностей?