In Racket's mini-kanren libraries, where is condi?

179 views Asked by At

The mini-kanren language features four conditional operators: conda, conde, condi and condu (described here). There are two mini-kanren libraries available for Racket that I am aware of (both described here). Neither of them implements condi.

My impression (halfway through reading The Reasoned Schemer, which minikanren.org calls "The Book") is that condi is important: it is the only conditional that takes the "fair disjunction" by interleaving branches, so you don't get stuck infinite-looping in a branch that never terminates when some other does terminate.

EDIT: I may have managed to implement condi myself, here. In The Reasoned Schemer, conde differs from condi only in that the last two arguments to mplus are flipped in mplusi, so that's what I implemented. But it's not working any more fairly than conde, from what I can tell.

0

There are 0 answers