Rich Hickey's Strange Loop transducers presentation ci dice che ci sono due implementazioni di map
in Clojure 1.6, una per le sequenze in clojure.core
e una per i canali in core.async
.Potrebbe core.async aver implementato le sue funzioni in termini di sequenze?
Ora sappiamo che in 1.7 abbiamo trasduttori, per i quali una funzione foldr
(reduce
) viene restituito da funzioni di ordine superiore come map
e filter
quando somministrato una funzione, ma non è una collezione.
Quello che sto cercando di articolare e in mancanza, è il motivo per cui le funzioni core.async
non possono restituire una sequenza, o essere Seq
-like. Ho la sensazione che le "interfacce" (protocolli) siano diverse ma non riesco a vedere come.
Sicuramente se stai togliendo il primo oggetto da un canale, puoi rappresentarlo come se togli il primo elemento da una sequenza?
La mia domanda è: Potrebbe core.async
aver implementato le sue funzioni in termini di sequenze?