freenode/lisp - IRC Chatlog
Search
4:16:26
jcowan
The Scheme standards are not as stable as the CL standards: they do grow. But very little of that is backward incompatible.
4:40:31
CrashTestDummy
Anyone here ever use Qemu (or some other hardware emulation rather that a normal VM) to compile the SBCL source?
4:47:12
moon-child
jcowan: really, huh. I always thought the main point of cl (and the reason it was so big) was to keep majority compatibility with all the lisps that preceeded it
4:47:47
jcowan
In many respects, yes. But CL was the firat "mainstream" lisp to do lexical scope, an idea borrowed -- from Scheme.
5:10:17
Nilby
I don't think dynamic scope is cheating, since it's basicly what the hardware does. But special variables seem a little like cheating, since it's like having undo on your memory.
5:10:25
beach
So the MacLisp compiler used lexical scope, but the interpreter used dynamic scope. The next Lisp system I used was Franz Lisp on Unix, and they worked very hard to make everything use dynamic scope.
5:17:04
moon-child
to my recollection, it was responsible for a number of elisp's performance problems
5:21:44
charles`
I don't see why one would be "cheating" and the other not though since I see them as basically the same thing. specials just have the advantage of being able to control which variables are dynamic
5:35:44
Nilby
I'll probably explain it wrong, so I don't want to annoy our experts. Old fashioned dynamic scope isn't much different than writing to a memory location. Lexicals can increase performance because they allow optimizations, increased locality, simplified management, as well as helping get rid of a class of bugs.
5:46:20
Nilby
In some way most old Lisps, but not the first, had a form of lexical scope with function arguments. We're lucky the whole scoping thing was nicely resolved in CL.
7:56:48
beach
Work is going fine, thank you. I am currently preparing my slides for the ELS talk. And yes, I work every day for around 10-12 hours.
8:02:51
saganman
Yeah, it is brought by people and government with their carelessness. Anyway you work relentlessly beach
8:04:31
beach
saganman: I think most researchers work all the time. One can't just turn the brain off.
8:20:33
remby
what is a lisp image? I know it's a binary that holds the interpreter, but I'm not sure how to picture this
8:23:08
beach
It is a bit long to quote it all here, but you can read it yourself in the Common Lisp HyperSpec.
8:31:03
remby
I think this is just kinda hard for me to imagine cause I'm not experienced with low level stuff, but I'll do more research
8:33:25
beach
Just think of it as a large graph of objects, each object taking up a chunk of memory, and some words in the chunk may contain pointers to other objects.
8:34:04
beach
So, a symbol will be a chunk that has a pointer to a string that holds the name of the symbol, and another pointer that refers to a package object.
8:35:04
beach
Executable code is just a vector of bytes that is tagged so that the operating system accepts that it is executed.
8:37:25
Nilby
ACTION laments that operating systems lost the ability to save a restartable image for any process.
8:38:58
beach
remby: Code is truly executable only when it is in the primary memory of the computer.
8:39:19
beach
And then it is just a sequence of bytes that the processor understands as instructions.
8:42:23
beach
There are lots of details that you need to know about to understand everything, of course. Like how a function calls another function, and how a function can refer to its arguments and its lexical variables.
12:08:17
daphnis
i couldn't find a straightforward way to checking that "foobar" ends in "ar" for example
14:39:00
lotuseater
hey i ran into an interesting problem recently ^^ an algorithm with TAGBODY and labels 1..13 has a step with "now goto step Z+3" so I calculate with (let ((next-step (+ Z 3))) (go next-step)) but of course that didn't work, as no NEXT-STEP label is there. i got it to run otherwise, but my question is is there another clever trick? :D
14:41:35
phoe
lotuseater: if you mean something like computing the tagbody tag dynamically - nope, that won't work
14:42:21
phoe
I mean, you can make yourself a function that accepts a number of sorts at runtime and contains a CASE with a series of GO calls
14:53:24
nij
Has anyone used Kenzo :) or even better seen the author hanging around in #lisp? http://www-fourier.ujf-grenoble.fr/~sergerar/Kenzo/
15:14:28
MichaelRaskin
Josh_2: what exactly are two states of the nose suitable for use in counting??
15:26:39
Bike
(defmacro computed-goto (min max val) `(ecase ,val ,@(loop for i from min to max collect `((,i) (go ,i)))))
15:26:54
Bike
i guess if you wated to be really fancy you could define a computed-tagbody macro to get the min and max for you
15:35:10
jcowan
phoe: You can't just eval the go, you have to eval the whole thing and use quasiquote to subsitute in the appropriate go tag.