freenode/#lisp - IRC Chatlog
Search
22:14:56
dim
if I (push :pgloader-image *features*) from a file where then I call sb-ext:save-lisp-and-die, should I expect the image built as a result to have #+pgloader-image?
22:34:04
dim
basically I want some handler-bind, lparallel:task-handler-bind and handler-case to act differently when in an interactive SLIME session and when in an image, to help me with debug facilities (empty condition handling) and to print something non-interactive when /usr/bin/pgloader is being used by a non CL developer
22:34:34
dim
seems I'm missing some things here and there still in the new save.lisp that I intend to use instead of buildapp when it's ready
23:52:11
sjl
Is there something like POSITION-IF that would give me a list of ALL positions that satisfy the predicate, instead of just the first?
23:52:26
sjl
(I can (already have) easily write my own, just wondering if there's something clever built-in I could use)
23:58:15
sjl
I think http://paste.stevelosh.com/8f7bed46c7fb4ca8bf8038741ed6f7e3bb4a6261 is probably good enough for what I need
0:18:03
verisimilitude
You can simply MAP the predicate and then have a SEQUENCE of where it does and doesn't aply, sjl.
0:19:03
verisimilitude
You could easily transform such a SEQUENCE into positional numbers or skip this intermediate step entirely.
0:21:14
sjl
Preferably it should use O(elements that satisfy the predicate) memory too, though I could live without that
0:21:52
sjl
Mapping the entire thing and transforming will allocate memory even for stuff that doesn't satisfy the predicate, which is a waste if only a couple of things do
0:23:51
verisimilitude
I write LOOP assuming COLLECTING is O(1), which any decent implementation would use.
0:24:36
sjl
But yeah, I'll just use my util function that I pasted earlier. It's efficient and works
0:24:44
verisimilitude
This is, again, just a basic implementation, of course; it works for what you want.
0:24:52
sjl
and it's not like I don't already have a giant utils library. what's one more function thrown on the pile
2:58:59
alandipert
is there a way to define a local function that has the function value of some expression? so that it can be called locally without funcall
3:01:39
alandipert
i was hoping to avoid funcall/apply but hey, this is CL, i need to learn to love lisp-2 :-)
3:02:11
verisimilitude
You could get away with using a symbol macro for this, I suppose, depending on what precisely you're doing.
3:02:32
alandipert
actually i think i figured out a more elegant way that doesn't need require doing this
3:21:07
psq
or perhaps I shouldn't worry about "approachability" and just go for what seems interesting?
3:22:05
verisimilitude
Alright; I have a well-documented terminal control library written in pure Common Lisp in less than one thousand lines.
3:23:36
verisimilitude
I've also written it to assume nothing about the character set the implementation uses, so it performs some tests for suitability and optimizes in the case of ASCII.
3:24:31
PuercoPop
pfdietz: Been skimming over the fuzzy-testing code in your ansi-test repo. Pretty cool. One question, what would 'something useful' on package errors be? build a list of the symbols that caused the package errors?
3:25:45
pfdietz
For the reader, it would suffice to have a restart so the code invoking the reader could suggest a package.
3:26:37
pfdietz
The goal of that was to stripmine a large corpus of Lisp for forms that are sort of reasonable.
3:27:10
pfdietz
And then mutate those and recombine them and throw them at the SBCL compiler, trying to get the compiler to signal errors.
3:29:44
pfdietz
I pulled in code from the entire quicklisp distribution and a bunch of other public lisp programs.
3:37:25
pfdietz
I would have liked to have read everything in the actual packages, but that's not possible if I want to read all of quicklisp, as there are many package name collisions.
4:24:43
beach
Commented-out code gives a very strange impression. What is the person reading the code supposed to think?
4:26:55
beach
Comments inside top-level expressions to be aligned with other expressions take two semicolons.
4:27:49
beach
Instead of using reader labels #= and ##, define an abstraction like a function or a macro. Code like that is quite unreadable.
4:29:59
beach
verisimilitude: I think it was a mistake to recommend your code as the first code for psq to read.