This is a follow-up to my previous question.
As I understand from Haxl and Stitch they use a monad for data access. The monad is actually a tree of data access commands. The children are the commands the node depends on. The siblings are executed concurrently.
The business logic creates the monad and then a separate function fetch
interprets it.
Now, the question: Suppose I am performing a few data access operations concurrently. I can use an applicative functor (not a monad), which is just a list of commands (not a tree).
Does it make sense ? What if the list contains duplicate commands ?