libera/#commonlisp - IRC Chatlog
Search
19:42:06
jmercouris
Josh_2 pointed it out, and macroexpanding it leads me to see that the documentation is very misleading
19:43:35
_death
it sets the bindings in parallel (rather than sequentially).. maybe you're conflating several meanings of the word
19:43:58
Bike
"More precisely, all subforms (in both the place and newvalue forms) that are to be evaluated are evaluated from left to right"
19:46:56
jmercouris
fair enough, but we are usually discussing in the context of the fourth dimension
19:47:00
Bike
as far as the programmer is concerned, they can take place at the same time. there's no way to determine what order they take place in, if any.
19:47:53
_death
with setf, it would be: (i) set a to the value of b (a=2,b=2) (ii) set b to the value of a (a=2,b=2)
19:48:37
Bike
for example, if your macroexpansion happened to expand to the two setqs in a different order, or starting two threads that do the setq and then joining them, you'd never know
21:32:08
Josh_2
etimmons: are the docs generated by 40ants/doc able to be hosted by a webserver like nginx straight away?
21:37:55
etimmons
Josh_2: yep! For instance, cl-tar publishes through Gitlab pages (which is just a static webserver under the hood)
21:39:07
etimmons
Any time I tag a commit in cl-tar or cl-tar-file, it triggers a new pipeline in cl-tar-site which downloads the documentation for the tag, shoves it in the correct folder, and then does the magic Gitlab pages dance to tell it there's a new set of files ready to be served
21:44:08
etimmons
Separate repo: <https://gitlab.common-lisp.net/cl-tar/cl-tar-site> it has some CL code in it, but I have zero plans to add it to QL since it's only used to build the project website
21:45:17
etimmons
It's also kind of an artifact of how c-l.net does its project pages. In order to get a site to show up under c-l.net/project/X/ using Gitlab pages, you need to use a repo named X/X-site
0:58:12
hayley
FWIW Bike's definition of parallel (w.r.t parallel assignment) is the undisputed definition of concurrent at least, that there are no happens-before relations that would order one before the other.
1:26:13
hayley
Can I do anything to make the SBCL compiler do less optimization somehow? It doesn't appear that the code I generate would benefit from much more type inference, for example.
1:56:22
hayley
Huh, optimizing for (speed 0) actually affected compile time (which went from 450ms to 250ms), and the drop in execution performance isn't that bad. Somehow I don't seem to write code where it usually does much.
5:37:35
lisp123
Usually its a trade-off between abbreviations vs. longer names, e.g. ((find (cadr function-definition) *cl-symbols* :test #'symbol-name-equalp)
5:38:28
lisp123
I put that into a COND as a test and now its hard to indent the body of the form since its already so long
5:42:35
lisp123
flip214: Yes, perhaps I should use anaphoric macros (seems a bit too much to define a wrapper around find)
5:45:35
lisp123
\n :test ) --> Since the test is optional, it flows better having that on a new line
5:45:50
beach
lisp123: Please don't use anaphoric macros. They tend to violate the rules of page 13 of the LUV slides.
5:47:41
beach
The best solution is to have lots of small functions, and occasional macros, so that the total code size is still limited.
5:48:46
lisp123
The trade off I am having with small functions is that one has to make an extra step to read what they do, whereas writing in terms of the standard function "inlines" it
5:50:46
lisp123
In this case, I think it might be a good idea, (defun IS-CL-SYMBOL (sym)), so I will do that -> But I used to have a lot of smaller functions and it felt like I was going through 5 functions to get to the final code
5:54:29
flip214
lisp123: right. but these additional small functions are a kind of documentation - one that (hopefully) better reflects what happens than comments that are outdated
5:58:21
lisp123
As in adding doc strings to these functions vs. writing comments? That sounds interesting
6:00:40
flip214
lisp123: yes. Small function tend to not change so much, so the docstrings stay current... they might not be used anymore, but that you can find out via xrefs and then delete them.
6:41:39
beach
lisp123: I agree with flip214. Small functions with relevant long names are self documenting, so they save effort to understand.
6:42:42
beach
Plus, if those small functions reflect useful abstractions, they can be reused in several places.