21:18:10equwalSo I found a line like this: `(defun add10 (#:m) (+ #:m 10)) at https://github.com/fukamachi/rove and I am curious what the down side of doing it this way is. Why don't we normally do GENSYMS like this?
21:23:21equwalIt is read into his test framework. I've never seen #:var used outside of a package definition, but I know it is meant to not INTERN the VAR.
21:23:38Xofbut if you don't intern it once, you don't intern it twice
21:23:56Xofso you have two different names, not the same (uninterned) name twice
21:23:57pfdietzRight. So those two #:m will create two different uninterned symbols, each with the symbol-name "M".
21:24:43equwalIt makes sense but I don't understand why that belongs in his README.
21:25:41pfdietzAh, looking at that: the expansion is being printed with *print-circle* = nil. If you set that variable, it will detect the sharing and print appropriately.
21:26:04pfdietzSo don't take that output literally as something readable.
21:27:53equwalMaybe he is trying to show that the form isn't evaluated?
21:28:33pfdietzThe reason names like M are not used is to avoid possible capture. Suppose N was an expression that used a free variable M?
21:29:41pfdietzThat EXPANDS function he wrote may being played a bit fast and lose? Maybe when it compared uninterned symbols, it just looks at their names?