I think that when building Fetch values, you can repeat the possibility of repeating the same query even in the same round of queries (when they are βbrothers and sisters,β as you say). If you look at the paper, Figure 4 explains the implementation of dataFetch , which is the constructor for Fetch values. It takes into account three possibilities:
- The request has never been made before.
- The request was completed before. And it was completed.
- The request was completed earlier, but it has not yet been completed.
In the latter case, you will notice that the returned value has an empty sequence of BlockedRequest s, because in this case there is another Blocked selection. That way, when the ap function is called with this value, it will not concatenate the same repeat request.
BTW I'm trying to implement Haxl in Scala here .
source share