[Haskell-cafe] wanted: Function to break circular data dependencies

Corentin Dupont corentin.dupont at gmail.com
Tue May 6 11:48:13 UTC 2014


Great, I didn't know unamb! Specially the function "race" included:

race :: IO<http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/System-IO.html#t:IO>a
->
IO<http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/System-IO.html#t:IO>a
->
IO<http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/System-IO.html#t:IO>a
Race two actions against each other in separate threads, and pick whichever
finishes first. See also
amb<http://hackage.haskell.org/package/unamb-0.2.5/docs/Data-Unamb.html#v:amb>.


Could it be used to build a watchdog? Simply by providing one of the two
arguments as an action that waits and then gives a default value.


On Tue, May 6, 2014 at 12:24 PM, Erik Hesselink <hesselink at gmail.com> wrote:

> On Tue, May 6, 2014 at 11:38 AM, Chris Warburton
> <chriswarbo at googlemail.com> wrote:
> > Job Vranish <job.vranish at gmail.com> writes:
> >
> >> I've often found myself wanting a function like this. It would make
> certain
> >> kinds of knot-tying/cycle detection _much_ easier.
> >>
> >> Is there any reason why this function can't/shouldn't exist?
> >
> > This makes me think of the more widely-known 'parallel OR' operator,
> > which evaluates its arguments in parallel and returns whichever finishes
> > evaluating first.
> >
> > This operator cannot be implemented in Lambda Calculus, but it can in
> > Haskell (via threads). Unfortunately Googling for 'haskell "parallel
> > or"' brings up sentence fragments ('...parallel or concurrent...')
> > rather than a parallel or implementation.
>
> Perhaps you are looking for 'unamb' [0]?
>
> Erik
>
> [0] http://hackage.haskell.org/package/unamb
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140506/afac382a/attachment.html>


More information about the Haskell-Cafe mailing list