libera/#commonlisp - IRC Chatlog
Search
4:45:18
rdrg109
I'm using SBCL and I'm trying to understand how to use ASDF, so I'm reading this manual https://common-lisp.net/project/asdf-install/tutorial/index-save.html#pre. According to that guide, I can load ASDF-INSTALL by executing (require :asdf-install)
4:51:40
rdrg109
asdf-install completely died more than a decade ago, having been completely superseded by Quicklisp.
4:52:28
kakuhen
most people just use quicklisp nowadays, which automatically loads asdf, either the asdf bundled with your implementation, or a custom one supplied by quicklisp itself (if your implementation doesnt offer one)
4:52:40
rdrg109
char: As a clisp newbie, I thought that using ASDF-INSTALL was necessary for insatlling packages, but now with the information provided at https://www.cliki.net/asdf-install, I know that it is not necessary and I should use Quicklisp insterad
4:53:44
kakuhen
I strongly recommend you install quicklisp; instructions are here -> https://www.quicklisp.org/beta/
4:54:24
char
quicklisp is really super. I'm experimenting with using guix to manage common lisp packages too though.
4:54:32
kakuhen
the process looks involved, but essentially you are downloading a lisp file, passing it to sbcl, and then you run (quicklisp-quickstart:install) and (ql:add-to-init-file) so that it loads whenever sbcl runs
4:56:54
rdrg109
I'm trying to install this library https://common-lisp.net/project/lisplab/ and it mentions that it needs to be installed through asdf.
4:58:42
char
quicklisp uses asdf in the background, so if you quicklisp:quickload it, it will work, granted it is on quicklisp repository
5:00:37
White_Flame
install quicklisp ( https://www.quicklisp.org/beta/ ), download the code and unzip it under ~/quicklisp/local-projects/, and then you should be able to (ql:quickload "lisplab")
5:01:17
White_Flame
however if you're just looking for matrices, it'd be better to grab one that quicklisp supports
5:01:42
kakuhen
lapack is some fortran library iirc so id be surprised if it can somehow install it for you
5:02:46
White_Flame
are you looking for general mathematic matrices, or specifically like 3d graphics matrices?
5:04:09
White_Flame
ok, I know less about that, but there is a linkage to octave: https://www.common-lisp.net/project/cl-octave/
5:04:36
rdrg109
White_Flame: How can I get a list of Quicklisp packages. The more information, the better. I only know how to list their names with (ql:system-apropos "")
5:14:12
beach
rdrg109: If you IRC client doesn't have abbrevs, you can use "CL" to mean Common Lisp.
5:20:32
beach
ACTION wonders why anyone would write an IRC client without abbrevs, and why anyone would want to use such a client.
5:21:01
rdrg109
I'm using weechat. Taking into account weechat's extensibility, there probably is a feature for that.
5:21:13
beach
ACTION also wonders why so few people seem to be interested in saving time by using abbrevs.
5:24:04
moon-child
beach: I think that systemic approaches to typing speed (such as stenography) may be worthwhile, but that my prose is not redundant enough that such a thing would be very helpful
5:25:14
beach
moon-child: I am tempted to go to the logs and do a frequency analysis of your utterances. :)
5:31:28
rdrg109
I moved lisplab to ~/quicklisp/local-projects/lisplab and I was able to execute (ql:quickload "lisplab"). The problem is that I'm getting a ton of errors with the following format: is 0.0, not a DOUBLE-FLOAT. [Condition of type SIMPLE-TYPE-ERROR] (complete log: http://0x0.st/-9CT.txt)
5:32:52
rdrg109
Is that normal behavior? Are those types of warnings as happen with g++ and big Qt projects?
5:33:21
moon-child
(also consider cognitive overhead, because obviously gzip will do a number on it)
5:35:38
beach
moon-child: It is interesting that the top one is "the", because my fingers are unable to type "the", and I end up with "teh" instead. So I have an abbrev that corrects that one.
5:36:20
moon-child
'teh' vs 'the' is interesting; I would think 'the' is easier to spell, because it uses alternating hands!
5:39:40
susam_
Interesting discussion. I too make mistype "the" as "teh" often but indeed "the" should be easier to type due to alternating hands.
5:48:45
beach
Also, a per-word analysis is not quite fair since an abbrev can generate several words, as in "first-class global environments", "(admittedly small) family", "Good morning everyone!", "Common Lisp HyperSpec", "Second Climacs", "(first) Climacs", "my favorite coauthor", "Common Lisp", each of which I have an abbrev for.
6:54:53
phoe
I remember that there was a technique for garbage-collecting class objects generated via DEFCLASS. What was required is SETF FIND-CLASS NIL and REMOVE-DIRECT-SUBCLASS but there must be something more because the finalizer on the class object is not firing for me - any ideas what I'm missing?
7:11:05
flip214
phoe: you could also redefine the class to contain no slots anymore... that should call INITIALIZE-INSTANCE
7:12:10
flip214
http://www.lispworks.com/documentation/HyperSpec/Body/f_upda_1.htm#update-instance-for-redefined-class
7:12:35
flip214
there's also a MAKE-INSTANCES-OBSOLETE http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_i_1.htm#make-instances-obsolete
7:21:34
prxq_
phoe: if you generate many classes often and want to have them GCed regularly, it pays to have them in temporary packages which can just be deleted. Subsequently the classes get GCed as well.
7:28:00
flip214
phoe: I guess having a UPDATE-INSTANCE-FOR-REDEFINED-CLASS method that runs CHANGE-CLASS on the instances to switch to a slotless (ie empty) class and triggering that via MAKE-INSTANCES-OBSOLETE might not need patching super/subclass relationships
7:31:22
phoe
flip214: I have DEFCLASS'd a hundred thousand times and I want these classes to be completely gone from the memory
7:41:03
flip214
well, you could just keep a pool of "free" STANDARD-CLASS instances and recycle them as needed as well ;)
8:30:17
flip214
CFFI pushes symbols in CFFI onto *FEATURES* (not keywords!), that means that such a *FEATURES* list may not be readable in arbitrary other images (because the package isn't available)
9:24:20
flip214
CFFI-FEATURES:FLAT-NAMESPACE CFFI-FEATURES:X86-64 CFFI-FEATURES:UNIX :CFFI CFFI-SYS::FLAT-NAMESPACE
9:28:30
splittist
It does make actually using feature expressions more difficult (having other packages)
9:31:20
flip214
only if you need to check for these non-keyword features, right? although, if it's in your own packages you can make sure the package exists before testing for them
10:50:57
susam
Inspired by the rainbow-delimiters customization discussion yesterday and phoe's colour scheme for it, I managed to finally customize my rainbow-delimiters today: https://i.imgur.com/9aDbSkL.png . These are darker shades of the colours phoe shared yesterday. Now I have to wait and watch to see if I really like it or if I find the extra colours distracting.
10:51:57
phoe
my colors were used with a more grayish background from the zenburn theme; they're gonna look different on a black background
10:53:11
susam
Yes, that is what I realized. I have a darker background, so had to make the colours a bit darker to suit my contrast preference.
11:10:33
edgar-rft
susam: if you want a really beautiful emacs I recommend this -> https://www.emacswiki.org/emacs/PinkBliss :-)
11:13:02
susam
Eh! Too colorful! :) I use wombat + some customizations of mine. I like the muted colours of wombat.
14:07:18
Josh_2
Anyone here used the function bknr.datastore:snapshot? Mine keeps failing trying to rename the a file
14:15:49
pjb
phoe: standard-class is a meta-class. standard-object could be the superclass: (defclass foo () ()) (typep (make-instance 'foo) 'standard-object) #| --> t |#
14:16:28
phoe
pjb: yes, that is what was meant - a class object instantiated via DEFCLASS has a direct superclass that is, by default, STANDARD-CLASS
14:16:29
pjb
(c2mop:class-direct-superclasses (find-class 'foo)) #| --> (#<standard-class standard-object>) |#
14:17:27
pjb
(c2mop:class-direct-superclasses (class-of (find-class 'foo))) #| --> (#<standard-class ccl::std-class>) |#
15:27:14
_death
mcclim was useful in making debugging easy today https://adeht.org/dump/vid-2021-06-24T1821.mp4
15:29:17
jackdaniel
if you have problems with clipping-to-ellipse being very slow, fret not - it will be faster soon enough
15:30:28
_death
well, they're ok if you tweak some settings and the graph isn't too complex.. most serious was, I think, the incremental redisplay doesn't not working well if stuff is in formatting-x.. or I don't understand it well enough
15:31:31
jackdaniel
incremental redisplay needs some work (the same could be said about table formatting)
15:42:46
beach
_death: Nice! Yes, that's the strength of CLIM. Not much code is needed to get something useful.
15:51:43
Josh_2
Whats the method that I can specialize in order to do something when missing a specific method for specific args?
15:52:31
Colleen
Clhs: standard generic function no-applicable-method http://www.lispworks.com/documentation/HyperSpec/Body/f_no_app.htm
16:14:40
beach
Guest63: The terminology varies, but they certainly are if they are defined in a non-null environment.
16:15:01
tfb
Guest63: they're closures if they are define in a non-empty environment. Which they almost never are
16:15:07
Guest63
shka: thanks, yes that's what I thought. I guess they "predated" the idea of closures, but they basically are - since they have lexical scope on the bindings
16:16:01
jackdaniel
a pattern sometimes found in the wild: (flet ((some-local-utility (…) …)) (defun a () … (some-local-utility …)) (defun b () … (some-local-utility) …)))
16:16:19
tfb
Guest63: If you define a closure as a function which uses a free lexical binding, then no, but really the distinction is artificial
16:16:33
beach
Guest63: The terminology varies. You can say that it's a closure with an empty static environment. But more often you would then say that it's not a closure.
16:19:04
Guest63
shka: yep, agree. I was just writing some notes and wanted to put "recursion" under closures but it also applies to functions, that got me thinking
16:19:59
shka
i guess, this is this time when theoretical categorization has limited practical application