На многих других языках можно создать общий асинхронный итерируемый тип, например Observable<T>
в вариантах Rx, chan T
в Go.Типизированные задачи в Julia
Julia's coroutine абстракция Task
- сопоставимая конструкция, которая может передавать объекты между (легкими) потоками. У Джулии есть способ аннотировать тип этих объектов?
Я хотел бы сделать функцию, которая принимает в качестве ее параметра Task
и сможет выразить тип объектов, которые выбрала задача. Например, если Task
были универсальный типом, я бы себе:
function foo(socket::Task{String})
for word in socket
println(word)
end
end
В более общем смысле, есть абстрактный тип объектов, которые итерация с использованием for
(или другие методами, использующими start
/next
/done
), так что я могут аннотировать в сигнатурах функций?