Looks like the code has a race-condition. You could either define it away (using thread-cells (ie once per thread)) or add some syncronization.
Robby On Wed, Oct 12, 2016 at 4:53 PM, Scott Moore <[email protected]> wrote: > On October 12, 2016 at 2:35:37 PM, Vincent St-Amour > ([email protected]) wrote: > > On Wed, 12 Oct 2016 16:31:46 -0500, > Scott Moore wrote: >> >> PS: is the documentation for use-once/c somewhere? >> >> I’ll add it to the docs when I get a chance. You can see the definition >> here: >> >> https://github.com/thinkmoore/racket-fuse/blob/master/private/filesystem.rkt#L132 >> >> use-once/c is a combinator that takes a procedure contract and makes it >> so that the contracted procedure can only be applied once. Ideally, I’d >> enforce the stronger property that you can use only one of the response >> or error callback for each procedure, but that would have been a bit >> trickier due to the need to attach the contract to two values at once. >> use-once/c is a nod to at least making sure you didn’t reuse them >> between operations... > > Any connection to Jesse's affine contracts? > > http://planet.racket-lang.org/package-source/tov/affine-contracts.plt/2/2/planet-docs/manual/index.html > > Vincent > > Neat! Hadn’t seen those before. My implementation is basically exactly > makeAffineFunContract from the paper but as a combinator instead of a new -> > contract. > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

