YES, and
If actors don’t run as Julia Task
s but build on another concurrency primitive, you are right. For example in Elixir tasks are built on actors (called “processes” in Erlang/Elixir) and not vice versa:
# Elixir example ...
worker = Task.async(Fib, :of, [20])
result = Task.await(worker)
IO.puts "The result is #{result}"
Tasks are implemented as OTP servers, which means we can add them to our application’s supervision tree. (Programming Elixir, p. 294)
It makes absolutely sense to introduce something similar in a Julian actor library as it solves the problem better than the structured concurrency approach. Just we cannot call it Task
since that is in Core
.