The intended behaviour is to use key as symbol to capture the actual key of the contains? predicate. The problem is that the current symbol resolution tries to resolve all symbols first and only leave the symbol alone if it fails. The solution is to not resolve capture binding symbols. The result is that key in the predicate is actually in scope of the phraser and not in global scope.
The following phraser doesn't work because
key
is a function inclojure.core
and most namespaces import it:The intended behaviour is to use
key
as symbol to capture the actual key of thecontains?
predicate. The problem is that the current symbol resolution tries to resolve all symbols first and only leave the symbol alone if it fails. The solution is to not resolve capture binding symbols. The result is thatkey
in the predicate is actually in scope of the phraser and not in global scope.