The first argument seems to be a normal Lisp expression, with no special syntax, and the second argument has the solution variable and all the variables mentioned in the expression bound to (the solution object, the values of the variables in the solution it found).
That doesn't sound any more unhygienic than pattern matching.