freenode/#clasp - IRC Chatlog
Search
3:15:00
Bike
i'm pretty much done with it, iw as just looking at how generic functions are implemented
3:22:52
drmeister
You use 'validatorfs' - is that a typo? Or did I screw up a search and replace? What does 'validatorfs' mean?
5:18:09
beach
The CST library is turning into a full replacement for the Cleavir code utilities, which is a good thing.
5:19:43
beach
Yeah. Some processing, like canonicalizing LET and LET* bindings used to be part of generate-ast, but it is definitely better to have it in the CST library.
5:21:02
drmeister
::notify Bike I fixed the validator thing. But say there is a validator that limits the range of values of a slot between 0 and 10. If I (setf (slot object) 15), the value is set to 10 but 15 is returned. I expected 10. The CLHS says of setf: "results---the multiple values[2] returned by the storing form for the last place, or nil if there are no pairs."
5:21:26
beach
Each time some code is transformed, it is important to preserve source location as must as is reasonable, so such transformations are naturally in the CST library.
5:28:49
drmeister
What source gets tracked when a macro is expanded? I've always been puzzled by what should best happen with source tracking when a macro is expanded.
5:31:00
beach
If some symbol appears several times in the expansion, it could have come from the original form, or it could have been introduced by the macro expander.
5:32:18
beach
We could do better if we had a way to track source code of the macro expander itself, but that's currently not done.
5:33:54
beach
For what it's worth, in SICL, I intend to load the entire contents of the file being compiled as a string into the image, and have source locations refer to that string.
5:34:25
beach
... as opposed to hoping that the file is still around, has the same, and has not been modified.
5:35:58
drmeister
I like to load whole files and work with them in memory - but I wouldn't think to keep them around.
5:36:59
beach
Source code will likely be paged out, so it's not necessarily RAM. People tend to ignore the existence of virtual memory.
5:39:35
beach
The entire source code of SICL is 6.4MB, which is ridiculously little in terms of RAM size today.
5:40:17
beach
But I am getting used to people no longer being able to do back-of-envelope calculations.
5:41:57
beach
It is sad, though, that people aren't able to do that, because a lot of wrong decisions are made that way, and it wastes huge amounts of human energy.
5:52:37
ecraven
my entire .quicklisp directory has 180k lines of code, so that would be less than 15MB
5:52:48
ecraven
imho there's absolutely no reason *not* to keep full source code around all the time
6:01:18
beach
But I see the same knee-jerk reaction over and over again. Maybe I am unusual. I have this thread in my brain that runs all the time and it checks orders of magnitudes of whatever I hear, read, or think.
6:04:39
ecraven
even assuming you only have 512MB of RAM (and even the 5€ raspberry pi zero w has that), that's less than 10% if you compress it a bit
6:06:24
beach
Whenever I make such an estimate in a lecture, just to make sure my students realize the order of magnitude, there are students who get furious and still claim their intuition is right.
6:07:08
ecraven
not to belittle anyone, but if they are students, they are probably too young to have experienced a time when memory *was* scarce
6:10:08
ecraven
so to summarize my thoughts on this: there's no @#$*&@#$*^ reason to not store all source code in-memory to make debugging simpler
6:10:38
beach
Absolutely. If it saves a minute of debugging time, it has been paid for many times over.
11:46:34
Colleen
Unknown command. Possible matches: 8, roll, say, login, time, help, deny, you are, notify, logout,
11:48:34
Bike
drmeister: yes, i noticed that. on sbcl it returned 10 when i tested it. i didn't look into it.
11:48:34
Colleen
Bike: drmeister said 6 hours, 27 minutes ago: I fixed the validator thing. But say there is a validator that limits the range of values of a slot between 0 and 10. If I (setf (slot object) 15), the value is set to 10 but 15 is returned. I expected 10. The CLHS says of setf: "results---the multiple values[2] returned by the storing form for the last place, or nil if there are no pairs."
13:18:08
Bike
kind of not sure what to do with THE. we can't say all THEs become type checks because some are uncheckable (to ignore the problem of what a THE instruction means in this brave new world), and even if we do make almost everything checks there are still multiple values
13:26:38
beach
It ought to be the case that all type declarations of variables turn into single-value THEs, right?
13:30:36
Bike
hm, i wonder if (symbol-macrolet ((x (values 1 2))) (declare (type (values integer integer) x)) ...) is legal
13:31:35
Shinmera
Bike: I gotta be honest, I'd be very surprised if that worked in any of the implementations
13:34:29
beach
Does the presence of user THE forms make it impossible to check whether we have (THE <type> <symbol>)?
13:35:14
Bike
what makes that a little difficult is that a symbol can be a symbol macro that expands into a non-symbol.
13:37:11
Bike
also, what i got out of yesterday was we were going to put the THE translator under implementation control
13:45:26
Bike
oh, assuming the type is fully expanded. i think you can have a deftype that expands into a values type
13:47:44
beach
I would say, try to recognize as many simple cases as possible. For example (THE <non-value-type> <form-known-to-return-exactly-one-value>).
13:50:15
Bike
it's annoying going from the mostly general way it is now to special casing, but i guess that's how it goes