| plutonas | Xach: lol :-D that was my mistake in writting the exercise with the keyboard |
| kpreid | plutonas: think about what lst might be. |
| plutonas | hm... it can be either nil or a cons? |
| twb | Ah, I know. |
| kpreid | no, this is a macro |
| Modius | Call lst list - shine the one edge you have over Scheme with pride! |
| kpreid | so lst is something that occurs in the source it's often a symbol, but not always |
| twb | plutonas: it's to do with one of the big gotchas in unhygienic macros. |
| kpreid | think about the case where it isn't a macro er, isn't a symbol |
| plutonas | kpreid: what can it be? a variable? oh no that is a symbol too right? a function? |
| kpreid | (a symbol can be a variable or a symbol-macro) |
| plutonas | hm, i don't know about symbol-macros yet |
| kpreid | that's OK, you don't need to for this problem here's a silly example: (push 1 (elt lists (incf i))) that definition of push will do something definitely wrong here |
| bfein | or (push 3 "I am not a list") |
| Xof | ok, I understand why, I think. And, guess what, it's to do with cacheing |
| bfein | actually that might work hehe |
| kpreid | bfein: nah, that'll just tell you a string isn't a place |
| plutonas | bfein: in the last example that doest work on normal push too |
| bfein | fine fine, I'll stop jumping in without thinking |
| jonphilpott | somebody call security |
| plutonas | kpreid: and your example does the same as normal push it creates a cons on the place i do not understand |
| rahul | plutonas: no, it evaluates the code that computes place twice |
| bfein | would the (incf i) be evaluated twice? |
| rahul | yes |
| twb | Should slime be taking a good 20 to 30 seconds to inspect a package's list of external symbols, with only 3500 exported symbols? |
| antifuchs | ILTWYS "only" (: |
| twb | Oh, and using SBCL 1.0. |