1:42:40aethThere are so many fun ways to avoid globals. You can create a closure by putting one or more defuns in a top-level let, for instance. Or you could create a macro that tracks what you want to track.
1:43:07kristofOk, my confusion has been dispelled.
1:44:04kristofI do like globals. They're in the language, and special bindings are unique among all the lexically scoped languages that they deserve to be understood and used.
1:44:08aethThis is one way I avoided having a global variable via a macro: (let (... (version (if (fboundp name) (multiple-value-bind (value version) (funcall (fdefinition name)) (declare (ignore value)) (if (and version (integerp version)) (incf version) 1)) 0))) ...)
1:44:42aethI turned the second return value into the version counter for redefinitions
1:45:16kristofI was actually using a defvar in this case to specify a dynamically scoped value that I just didn't want to pass as an argument. I find that valuable
1:45:54kristofI do wonder why there wasn't a lexical declaration
1:46:03aethThat does make sense, but I find that the things that make sense as special variables usually already exist (things like *standard-output*)
1:46:29kristofand why it wasn't enforced for, say, defun params
1:48:00Bikeif you declare a variable special _locally_, and then bind it again in that extent, that binding will be lexical, so no need for a declaration
1:48:12Bikeproclaiming something globally special is extra special
4:26:51didi`Hum, SBCL must do something interesting with the order of slots of a struct, because changing the order of the slots and redefining the struct freaks out the compiler.
4:27:36Bikewell, it uses that order for the internal data layout
4:27:45Bikehypothetically i guess it could recognize that you only permuted them
4:27:57flip214didi`: just redefine the same struct a second time ;)
8:13:17knobobeach: Web application environment for Common Lisp
8:13:53knoboI'm not shure if it would be possible to do what I want.
8:15:07knoboI want to find out what could be possible.
8:16:26knoboLike, if it is possible to trace the function call tree when an url is accessed, and send update to the browser when any of those functions are recompiled.
11:02:00jmercourisI'm looking here at gentle introduction to symolic computation and they say you can only sharp-quote normal functions, can't do it for macro functions
11:02:00minionjmercouris, memo from flip214: if the image is uncompressed, the mmap() is quite fast. if it's compressed, larger images will take more time to run.
11:06:04shkai had no idea that you can #'if in sbcl!
11:06:45ebzzryjmercouris: sbcl takes that liberty. ccl and clisp barfs with #'if.
11:07:01shkajmercouris: don't count on doing that though, standard states that if is a special form and it is up to implementation to decide how to implement it
11:11:58jmercourisI always thought mapcar was a strange name, and it only just occured to me that we are mapping a function onto the car of each cons cell
11:15:31jmercourisI've already done PCL, and I've been doing some lisp programming for approximately a year now, but I felt there are so many gaps in my knowledge, decided to go back to basics from cover to cover
11:15:46ebzzryjmercouris: that’s the path that I suggest. CLAGITSC before PCL.
11:17:36knoboblep-on-external: Depends on your project.
11:40:34beachjmercouris: You can use MACRO-FUNCTION to get to the function that a macro defines, but it has a strange signature, so you can't just FUNCALL it with the arguments to the macro.
11:45:00jmercourisYeah, I read the whole thing, its just a strange way to start the description
12:43:22beachI guess I can test the memory allocator by allocating and freeing random chunks and verifying after each operation how much total space is left on the heap.