This is just a brainstorm, which I hope someone will look into more deeply. * {{>x>}} is "and" * {{|}} is "or" * {{<x<}} is "cut" (more on this later) Orc's evaluation order is breadth-first rather than depth-first like Prolog. In many scenarios we are only interested in the first solution (first publication), so depth-first evaluation is more efficient (this exact idea is explored in [Deparallelization]). !!! and: {{>x>}}, or: {{|}} Ignoring cut, the logical meaning of these combinators is obvious. !!! cut: {{<x<}} Prolog's cut operator (!) prevents backtracking. Since Orc's evaluation is breadth-first no direct translation is possible, but there is a rough analogy. "F <x< G" evaluates F with only the first possible value of G, just as G, !, F does.