libera/commonlisp - IRC Chatlog
Search
23:37:40
dbotton
Is there a convention used in code for a variable named "this" or "self" by Common Lispers?
23:38:31
Bike
i don't think so. generic functions are not strongly tied to any argument in particular.
23:45:00
phoe
I think that generating code for the user is going to be harmful if it teaches the user that there is some sort of "self" in methods
23:45:05
dbotton
however since the name of BAR can change with a configuration change it means every thing has to generated again
23:45:21
EdLangley[m]
Some things like PRINT-OBJECT use OBJECT or similar for the parameter the user is expected to specialize
23:46:23
phoe
"methods should therefore not depend on the identity of this stream." is the only thing that's mentioned
23:46:50
EdLangley[m]
but, if you can't depend on the identity of the stream, you can't rely on it being the class you expect it to be
23:48:00
phoe
dbotton: the main issue I see is, what meaning do you want to convey - argument names can be completely dumb like ARGUMENT-1 ARGUMENT-2 ARGUMENT-3 and so on, but they are meaningless
23:48:17
phoe
if you are telling the user to configure something, use the argument names to tell them what they are configuring
23:48:28
mfiano
Just name it what the most specific thing that it can be, not something generic like THIS or SELF that has a single-dispatch connatation
23:49:05
mfiano
Hell I'd use single letters over that. That would send the wrong message to a newcomer.
0:12:49
dbotton
i'll think it over, wonder if another word works better for object of event, maybe target
2:38:09
dbotton
Is there a way in common lisp to turn off a style warning for unused variables for a certain region beyond using (declare (ignore target))?
2:46:47
Bike
Not really. Maybe you can swing something with sbcl's muffle-conditions extension though
2:47:42
etimmons
Or declare them ignorable (if the problem is that it's hard for you to tell if they are actually used)
3:44:38
kathe
would you be in a position to comment on which is a good common lisp programming environment under macos?
3:45:33
kathe
i "was" going to migrate to windows and hence use lispworks, but macos is looking very impressive.
3:52:47
semz
kathe: Clozure CL is probably a good choice, it focuses on Macs quite a bit and I think it even has its own IDE on there (although I've never used it so I can't say anything about its quality)
3:59:38
kathe
hmnn, hemlock is very interesting, but doesn't have the wide array of modes available with 'gnu' emacs.
4:02:38
kathe
i don't have any background in common lisp nor emacs, and i'm a bit confused about how to learn both in parallel without messing up my thought process.
4:03:45
kathe
so should i first work through the emacs tutorial and manual, get well acclimatised with emacs and then start-off with common lisp?
4:05:52
kathe
i had been quite gung-ho about forth, but after my interaction with some people from it's community regarding introducing a "condition system" and an object system via a metaobject protocol were shot down, i'm going to stick with common lisp.
4:07:35
kathe
thanks EdLangley, i think i'm going to stick with ubuntu. not only does it offer better facilities for development systems but a ubuntu-based setup also costs a lot lesser than a mac.
4:09:47
White_Flame
those who don't use emacs are forging their own path, and yeah hopefully other paths get as fully supported
4:10:32
ns12
kathe: What text editor are you currently using? Perhaps your current text editor has some support for Common Lisp. This will free up more time for learning Common Lisp.
4:11:16
kathe
i cut my teeth on 'sco' openserver so i tend to lean toward vi (not vim), but i'm eager to learn emacs because of the tight integration with common lisp development routines.
4:11:17
White_Flame
after sbcl & emacs, you want to install, in order: quicklisp, quicklisp-slime-helper
4:11:42
White_Flame
you shouldn't really need to adjust any config files after following their steps
4:12:38
EdLangley[m]
https://portacle.github.io is also a good way to get a nice package of "all of the above"
4:12:52
ns12
I personally use the SBCL REPL directly (with rlwrap for readline keybindings). That's another way to defer learning Emacs.
4:13:51
White_Flame
lots of cheat sheets, if you're learning: http://pchristensen.com/wp-content/uploads/2008/02/slimecommands.pdf
4:13:58
minion
kathe: look at PCL: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
4:14:57
ns12
Here's a list: https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-langs.md#lisp
4:18:58
ns12
In the free books list, "Practical Common Lisp" and/or "Common Lisp: A Gentle Introduction to Symbolic Computation" are typically recommended to beginners.
4:19:31
kathe
I checked out slimv and vlime based setup, but i think i'll go with emacs because i can do almost everything else from within emacs (irc, email, notes, todo, etc.).
4:20:33
kathe
ns12: i've heard that the digital version of touretzky's book doesn't have corrections present in the paperback one.
4:23:12
kathe
2 things that most impress me about common lisp are the "condition system" and the "metaobject protocol" based object-system.
4:26:15
kathe
i don't remember finding the "condition system" in autolisp, nor did any of the seniors talk about it back then.
4:28:33
Bike
"The *error* function takes a single string argument, which is supplied by AutoCAD when an error is encountered during program evaluation. This string describes the error which has caused the *error* function to evaluate." doesn't sound like it has the condition system
4:30:22
kathe
i went through the sample session in phoe's "Appendix E". it's mind blowing. waiting to complete learning common lisp and buy phoe's book on the "condition system".
4:36:43
mfiano
I'd need conformal displacement for anything more than a flat row-major view of the backing storage, correct?
4:38:52
mfiano
Currently I only need a view of a pixel in a '(width height channel-count) #3a, but I was also thinking of things like a NxM kernel view for convolutions.
4:40:16
mfiano
Guess I could just derive the shape/extents from a single pixel and mutate the original directly.
5:16:04
qhong
recalling the discussion about software longevity a few days ago, what you guys think about a Nix/Guix replicate that runs in a single Lisp image a la asdf?
5:30:07
kagevf
I use guix to install nyxt since that's the only way I could figure out how to get all the right versions of nyxt, sbcl, and emacs ... necessary to connect to nyxt's swank server from slime
5:32:31
kagevf
qhong: what would the nix/guix inside CL do? find, and build CL systems? and allow easy switching between different versions? and also act as a package manager? so it would replace asdf and QL, plus add the versioning?
6:07:49
qhong
kagevf: I also think that reproducibility is a pain point of the status quo of CL eco-system. Hyrum law is real. I have no hope contemporary CL projects still work after just 20 years
6:19:18
qhong
mfiano: AFAIU CLPM is akin to a traditional package manager (ala pip, npm etc) rather than a functional pm
6:21:45
mfiano
Of course. Many existing software systems rely on stateful actions during installation. ASDF is programmable to do anything you could want.
6:22:59
lisp123w
kathe: I was trying Sly recently last week but had some pretty bad experiences so reverted to Slime
6:23:44
lisp123w
But in general Sly has some more advanced features (like stickers, which allows to mark a region to get automatic printing on the output) and a better search
6:24:09
moon-child
qhong: cl is in general ideologically aligned towards flexibility over analyzability
6:26:05
qhong
UNIX (and UNIX toolchain) allows as much flexibility (albeit much more poorly designed) on its FS state as CL (and ASDF), yet ppl eventually curse it and invented Nix/Guix
6:27:50
moon-child
mfiano: well, that is interesting, because jails encapsulate non-referentially-transparent things (such as network devices). Probably not super relevant to present discussion
6:28:26
moon-child
qhong: in particular, I can trivially calculate (and isolate) the closure of some object in unix, but not in lisp
6:28:32
qhong
As for edge cases, Nix/Guix has to deal with them manually too and it doesn't seem like too much a practical issue
6:29:08
moon-child
and I can observe all the side effects of an arbitrary operation (see ptrace, dtrace, this has been effected in practice)
6:29:08
qhong
mfiano: I understand you can certainly break it, my question is how many packages actually do it
6:30:36
moon-child
qhong: the closure of an object is the set containing that object and all the objects it points to
6:30:48
moon-child
(actually, the implementation generally gets such a closure, e.g. for fasls; but you do not)
6:31:27
qhong
moon-child: you mean one can get who-reference for arbitrary datum? damn I always want it so hard when CLing
6:31:41
lisp123w
kathe: I think Sly works better for multiple REPLs (I was doing a setup where I had SBCL / CCL / CLISP all on 1 command each), but I didn't want to spend time debugging the issues I had (lag on remote connection to an Image, some other strange bugs) so I reverted to Slime and it suited me.
6:32:35
lisp123w
kathe: However, the stickers thing in SLY is really good - so don't discount it based on my words. Its just that I was doing some bespoke setups which Sly had some issues on my machine
6:33:29
EdLangley[m]
Lispworks's delivery system can do a bunch of stuff that's unsafe if symbols are interned dynamicaly
6:34:12
kathe
lisp123w: thanks. on a different note, would you suggest that i learn to work with emacs in parallel with learning common lisp?
6:34:46
mfiano
Can you take care of dynamic runtime code that generates symbols looking for a specific package with uiop:symbol-call, alexandria:format-symbol in macro's, etc?
6:35:43
qhong
Basically, before build, all dependency are renamed to their nominal names, and after build, all dependencies plus newly created packages are renamed to their unique name
6:36:25
mfiano
I wouldn't want anything to do with such restrictions, but then again, I don't like Linux either.
6:36:49
lisp123w
kathe: Yes, it will be useful for many reasons I won't go into. The trick with Emacs is read the tutorial and guide (don't just jump in), then learn the keybindings C-h k (which lets you see what a keystroke does), C-h f (which describes function at point), C-h v (which describes variable at point), C-h b or C-h m (to see what keybindings are active in the buffer). But I'll shut up now (you can ask #emacs for more help there)
6:37:17
EdLangley[m]
And I can tell when a system uses them, because inevitably my preference of doing (setf print-case :downcase) breaks loading such systems :)
6:38:32
mfiano
ACTION is amused at the thought of #'(setf documentation) being changed when you look at it.
6:41:09
qhong
Actually I think there is an outrageous hack to make macros finding specific package at runtime still work
6:41:41
qhong
First I assume they will use keyword symbols instead of strings, then we can unintern those keywords after each build, and hack `find-package` so they recognize such keyword
6:43:14
lisp123w
EdLangley[m]: !!! Thank you for that archaic macro, very useful to protect against unintended consequences
6:47:23
EdLangley[m]
So, I think the best way (at the moment) to make building systems deterministic is to compute a dependency graph of the system you want to load and then do a depth-first postorder traversal of the graph, building each system you encounter in a subprocess
6:52:32
qhong
EdLangley[m]: hmm, interesting. so, because we can't do isolation in Lisp, let's use UNIX process virtualization to do isolation
7:46:36
kathe
phoe: i assure you that i will definitely buy the book, only i want to be ready for it. :)
7:46:43
moon-child
I dare say if you have completely learned common lisp you will not get much value out of the book, but
7:47:47
kathe
phoe: will you please consider writing a similar walk-through for 'clos' using 'mop'? currently there are disparate books, mostly going beyond what's really required to work under common lisp.
7:49:25
phoe
the only sane way to access keene's book is to *somehow* grab a physical copy or to visit Library Generic
7:51:07
moon-child
https://www.abebooks.com/products/isbn/9780201175899?clickid=WmHzvNy54xyIWLPUVSRa73dbUkGyAWwJITkbUg0&cm_mmc=aff-_-ir-_-64682-_-77798&ref=imprad64682&afn_sr=impact
7:57:05
mfiano
Hmm I think I'll read this book this weekend. Looks like I will enjoy it better than AMOP. I found too many errors in that book that stunted my learning and questioned my sanity.
7:58:28
phoe
kathe: if you're alluding to TCLCS, I simply had enough reviewers from all over my known Lisp world
8:00:25
phoe
the main issue with keene book is that some examples don't really work anymore, and they're kind of badly chosen (e.g. the lock primitive)
8:00:36
kathe
phoe: the 'mit' press book explains 3 different approaches to 'mop' implementation without relying on common lisp.
8:00:50
phoe
and paepcke's is kind of a collection of articles rather than a singular and consistent book
8:09:09
phoe
kathe: https://www.reddit.com/r/lisp/comments/6qc61v/second_edition_published_interpreting_lisp/dkw66fl/