Rich Hickey's Strange Loop transducers presentation informuje, że istnieją dwie implementacje map
w Clojure 1.6, jedna dla sekwencji w clojure.core
i jedna dla kanałów w core.async
.Czy core.async może implementować swoje funkcje pod względem sekwencji?
Teraz wiemy, że mamy w 1,7 przetworniki, dla których funkcja foldr
(reduce
) jest zwracany z funkcja wyższego rzędu jak map
i filter
gdy dana funkcja ale nie zbiór.
Co staram się artykułować i nie, dlatego funkcje core.async
nie mogą zwrócić sekwencji lub być podobne do Seq
. Mam wrażenie, że "interfejsy" (protokoły) są różne, ale nie widzę jak.
Z pewnością, jeśli zabierasz pierwszy element z kanału, możesz go przedstawić jako pierwszy element z sekwencji?
Moje pytanie brzmi: Czy core.async
może zaimplementować swoje funkcje pod względem sekwencji?