Details
-
Type:
Defect
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Environment:1.2 and 1.3
-
Patch:Code
-
Approval:Test
Description
See:
https://groups.google.com/group/clojure/browse_frm/thread/cc88ca26352bc604?hl=en#
When called via a namespace-qualified symbol and given three or more arguments, -?> gives the error:
user=> (clojure.contrib.core/-?> 1 inc inc)
CompilerException java.lang.Exception: Unable to resolve symbol: -?>
in this context, compiling:(NO_SOURCE_PATH:3)
Root cause is in clojure.contrib.core/defnilsafe, so similar functions like .?. will have the same problem. I futzed around for a while to try and figure it out, but defnilsafe is a little too meta for me. The problem is, predictably enough once you've glanced at the code, with ~'~nil-safe-name.
The general solution ought to look like
(let [qname (symbol (name (ns-name *ns*)) (str nil-safe-name))]
`(existing body...
(more stuff using ~qname instead of ~'~nil-safe-name...)))
But I couldn't make it quite work.