jackdaniel changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook> | Pastebin: <https://plaster.tymoon.eu/>
luna-is-here has joined #commonlisp
perrierjouet has joined #commonlisp
ec has joined #commonlisp
<hayley> pjb: I was taught to handle hash collisions at school.
livoreno has quit [Ping timeout: 268 seconds]
random-nick has quit [Ping timeout: 250 seconds]
makomo_ has quit [Ping timeout: 250 seconds]
Josh_2 has quit [Ping timeout: 264 seconds]
akoana has quit [Remote host closed the connection]
ec has quit [Ping timeout: 258 seconds]
akoana has joined #commonlisp
<jcowan> Rehashing is not amortized O(1), so it should probably be avoided (though that performance is not a requirement)
tyson2 has quit [Read error: Connection reset by peer]
phadthai has joined #commonlisp
tyson2 has joined #commonlisp
akoana has quit [Quit: leaving]
Alfr has quit [Ping timeout: 265 seconds]
<dbotton> anyone know how to rename a directory in Lisp?
<kakuhen> I assume "Lisp" here means "Common Lisp"
livoreno has joined #commonlisp
<kakuhen> I would guess to supply :rename to the :if-exists keyword argument of open
jmdaemon has joined #commonlisp
<kakuhen> that or look into any functions exported by UIOP
<dbotton> in this irc channel I think kakuhen that is the only meaning for Lisp ;)
<kakuhen> Just trying to make sure you don't mean LISP 1.5 or something else :P
<kakuhen> renaming directories in that would be difficult i think
<dbotton> #commonlisp :)
<kakuhen> that's just the name of the channel and doesn't make it obvious what you mean by "lisp" unfortunately
<kakuhen> it's a similar reason drivers must use turn signals even if they're in e.g. a left-turn lane, but this is getting off-topic now
<dbotton> anyways the open solution you mention will not work on directories and I do not know of a funtion in uiop
<hayley> RENAME-FILE appears to work on directories, but the CLHS isn't clear that it should work.
azimut has quit [Ping timeout: 258 seconds]
<hayley> "rename-file modifies the file system in such a way that the file indicated by filespec is renamed to defaulted-new-name." Problem is that I'm not really indicating a file, I think.
<kakuhen> ok I found my mistake; I blindly assumed osicat-posix is part of uiop (it's not)
<kakuhen> it exports the relevant syscalls for renaming dirs
<kakuhen> with that said, I think it's intentional rename-file doesn't specify what it does for directories since not all OSes and file systems will want to treat directories as files
<kakuhen> nonetheless, a quick look at CCL's implementation of RENAME-FILE shows the rename() syscall being used under the hood, so you should be fine using RENAME-FILE in that implementation, but this strategy isn't very portable it seems
<kakuhen> so I stand by osicat-posix:rename
rgherdt has quit [Read error: Connection reset by peer]
rgherdt_ has joined #commonlisp
waleee has quit [Ping timeout: 250 seconds]
Furor is now known as Colere
eddof13 has joined #commonlisp
eddof13 has quit [Client Quit]
Alfr has joined #commonlisp
epony has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
taiju has quit [Ping timeout: 244 seconds]
<neominimum> Am I misunderstanding how `LDIFF` works? `(ldiff (list 1 2 3 4 5) 3) => (1 2 3 4 5)` I was expecting it to return `(1 2 3)`
<beach> Try (ldiff (list 1 2 3 4 5) (list 3 4 5))
<neominimum> `(ldiff (list 1 2 3 4 5) (list 3 4 5)) => (1 2 3 4 5)`
<beach> Yeah, I guess it needs to be EQ. Hold on...
<neominimum> I tried symbols too with the same result
<neominimum> SBCL btw
<beach> (defparameter *l* (list 1 2 3 4 5))
<beach> (ldiff *l* (nthcdr 2 *l*))
<beach> LDIFF compares a *tail* of the first list to the second list. Not an *element*
<beach> And it has to be the *same* which means EQ,
<neominimum> Oh okay, I see.
<beach> To do what you asked about, do something like (subseq *l* 0 (position 3 *l*))
ccregor has quit [Remote host closed the connection]
<neominimum> Alright thanks beach
ccregor has joined #commonlisp
<beach> Pleasure.
ec has joined #commonlisp
taiju has joined #commonlisp
ccregor has quit [Quit: Konversation terminated!]
ec has quit [Ping timeout: 258 seconds]
jmdaemon has quit [Ping timeout: 264 seconds]
SR-71 has joined #commonlisp
jmdaemon has joined #commonlisp
causal has joined #commonlisp
jmdaemon has quit [Quit: ZNC 1.8.2 - https://znc.in]
Colere has quit [Ping timeout: 252 seconds]
Colere has joined #commonlisp
Furor has joined #commonlisp
jmdaemon has joined #commonlisp
Colere has quit [Ping timeout: 265 seconds]
Furor is now known as Colere
dre has quit [Quit: Leaving]
gateway2000 has quit [Quit: Leaving]
ttree has quit [Ping timeout: 252 seconds]
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
Cymew has joined #commonlisp
rgherdt_ is now known as rgherdt
livoreno has quit [Read error: Connection reset by peer]
livoreno has joined #commonlisp
random-jellyfish has joined #commonlisp
SR-71 has quit [Read error: Connection reset by peer]
<fiddlerwoaroof> clhs mismatch
ttree has joined #commonlisp
gateway2000 has joined #commonlisp
_cymew_ has joined #commonlisp
<pjb> hayley: hash-table is not a hash table data structure. It's a data structure that is intended to have the same time and space complexities as if it was implemented with a hash table.
<hayley> I read "[CL hash tables not having collisions] is a demonstrate of the difference between an algorithm school exercise, and an actual industry-strength library." But, in the classes I went to, we'd handle collisions, and that was the motivation for introducing bucket vs. linear probing tables.
<pjb> hayley: the specs doesn't impose a strategy to avoid collisions or deal with them if they occur.
<hayley> Rigiht.
<hayley> *Right.
thuna` has joined #commonlisp
igemnace has joined #commonlisp
_cymew_ has quit [Ping timeout: 265 seconds]
shka has joined #commonlisp
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
m5zs7k has quit [Ping timeout: 265 seconds]
m5zs7k has joined #commonlisp
ttree has quit [Read error: Connection reset by peer]
attila_lendvai has joined #commonlisp
ebrasca has quit [Remote host closed the connection]
cosimone has joined #commonlisp
ec has joined #commonlisp
makomo_ has joined #commonlisp
ec has quit [Ping timeout: 258 seconds]
MajorBiscuit has joined #commonlisp
livoreno has quit [Ping timeout: 250 seconds]
waleee has joined #commonlisp
torhex-pasmul[m] has quit [Quit: You have been kicked for being idle]
Brucio-61 has quit [Ping timeout: 250 seconds]
scymtym has quit [Ping timeout: 268 seconds]
livoreno has joined #commonlisp
makomo_ has quit [Quit: WeeChat 3.5]
makomo has quit [Ping timeout: 265 seconds]
Brucio-61 has joined #commonlisp
waleee has quit [Ping timeout: 268 seconds]
scymtym has joined #commonlisp
karlosz has joined #commonlisp
defb has joined #commonlisp
<scymtym> regarding the earlier discussion about renaming directories: on UNIX systems, if the CL implementation or library in question uses rename(2), the operation will fail if the old name and the new name are not on the same filesystem. SBCL, for example, uses rename(2)
makomo has joined #commonlisp
random-jellyfish has quit [Quit: Client closed]
taiju has quit [Ping timeout: 244 seconds]
Sose has joined #commonlisp
random-nick has joined #commonlisp
pve has joined #commonlisp
_cymew_ has joined #commonlisp
tyson2 has joined #commonlisp
defb has quit [Remote host closed the connection]
_cymew_ has quit [Ping timeout: 265 seconds]
mfiano has quit [Ping timeout: 265 seconds]
mfiano_ has joined #commonlisp
mfiano_ is now known as mfiano
<contrapunctus> Is there a `format` directive to determine whether a certain word should be preceded with "a" or "an"? I seem to remember there was, but I can't seem to find it.
jmdaemon has quit [Ping timeout: 244 seconds]
<scymtym> contrapunctus: are you maybe thinking of -y/-ies vs -/-s for the plural directive?
ec has joined #commonlisp
<contrapunctus> scymtym: I may have been remembering that. What I'm after is "apple" → "an apple", "fruit" → "a fruit", etc.
<contrapunctus> Easy enough to do via regex, but `format` is one less dependency, and terser too.
<pjb> contrapunctus: (mapcar (lambda (word) (format nil "~:[a~;an~] ~a" (find (aref word 0) "aeio") word)) '("banana" "ananas")) #| --> ("a banana" "an ananas") |#
lisp123 has joined #commonlisp
<scymtym> you could also package that as a custom format directive so that you can write (format … "… ~/my-package:with-article/ …" "ananas")
<pjb> contrapunctus: you could wrap that in a (format nil "~/indefinite-article/ ~a" word)
<pjb> as scymtym said.
makomo has quit [Ping timeout: 250 seconds]
<neominimum> Is there a built-in way to preserve polymorphic method dispatch while only dispatching when a method exists for the most specific class of the given object? Rather than calling the next most specific method I'd like a condition to be raised instead. I figure a custom method combinator might work, but I don't want to reinvent the wheel if unnecessary.
<lisp123> confused
<lisp123> i think you just don't call the next method and raise a condition instead no?
<beach> Conditions are "signaled". Not "raised".
<lisp123> neominimum: you are saying if call-next-method does not exist then signal a condition?
thuna` has quit [Remote host closed the connection]
<jackdaniel> I think that they say that if you have a method foo specialized on the class qux, then if you have a subclass xyz then this method should not be applicable to an instance of xyz
<neominimum> No, signal a condition if a method doesn't exist specialised on the class
<beach> I think that neominimum means that if the generic function is given some object O, and O is a direct instance of the class C, then only a method with C as its specializer should be applicable, and not a method specialized to some D which is a superclass of C.
cosimone has quit [Ping timeout: 264 seconds]
<neominimum> beach: yes thank you
<neominimum> jackdaniel: yes
<beach> Thought that sounds contrary to the Liskov Substitution Principle.
ec has quit [Ping timeout: 258 seconds]
<neominimum> It is, although necessary in my case
<beach> I am just saying that it would be strange if any standardized method combination would break that principle.
<neominimum> Ah okay, perhaps not a common need
makomo has joined #commonlisp
nij- has joined #commonlisp
<neominimum> I suppose I am misappropriating the object system if I am asking such things. I'll try something else.
<lisp123> What is the Liskov Substitution Principle?
dmgk has joined #commonlisp
<neominimum> behavior defined on a superstate applies to the substate
<jackdaniel> this basically means, that if X is a subclass of Y, then anywhere where Y fits X will do as well
<lisp123> Ah ok
<neominimum> class*
<lisp123> thanks
defaultxr has quit [Ping timeout: 268 seconds]
lisp123 has quit [Remote host closed the connection]
<jcowan> The concrete version of the LSP: "If you need a dog, you need a dog. If you just need a mammal, a dog will do fine.""
<antoszka> +1 :)
Dynom_ has joined #commonlisp
Dynom_ is now known as Guest1758
<scymtym> pretty obscure, but SBCL has a kind of specializer with the described behavior: (defclass super () ()) (defclass sub (super) ()) (defmethod f ((o (sb-pcl::class-eq super)))) (f (make-instance 'sub)) |- no applicable method
<neominimum> Cool thanks
<neominimum> :)
cosimone has joined #commonlisp
azimut has joined #commonlisp
metallicus has joined #commonlisp
attila_lendvai_ has joined #commonlisp
attila_lendvai has quit [Ping timeout: 265 seconds]
nij- has quit [Ping timeout: 244 seconds]
rogersm has joined #commonlisp
Sose has quit [Read error: Connection reset by peer]
ec has joined #commonlisp
ec has quit [Ping timeout: 258 seconds]
cage has joined #commonlisp
random-jellyfish has joined #commonlisp
tevo has joined #commonlisp
nij- has joined #commonlisp
epolanski has joined #commonlisp
ec has joined #commonlisp
ec has quit [Ping timeout: 258 seconds]
waleee has joined #commonlisp
attila_lendvai_ has quit [Ping timeout: 250 seconds]
random-jellyfish has quit [Quit: Client closed]
TheLonelyAdventu has joined #commonlisp
eddof13 has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
attila_lendvai_ has joined #commonlisp
<TheLonelyAdventu> /msg NickServ VERIFY REGISTER TheLonelyAdventu 4dQbSjUPvzlUWU7N
<TheLonelyAdventu> obviously
<jackdaniel> /quit
<jackdaniel> hm, doesn't work
<TheLonelyAdventu> sheesh. I have never used Pidgin.
livoreno has quit [Ping timeout: 264 seconds]
makomo has quit [Ping timeout: 265 seconds]
notzmv has quit [Ping timeout: 268 seconds]
TheLonelyAdventu has left #commonlisp [#commonlisp]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
livoreno has joined #commonlisp
eddof13 has joined #commonlisp
LonelyAdventurer has joined #commonlisp
LonelyAdventurer has left #commonlisp [#commonlisp]
LonelyAdventurer has joined #commonlisp
<LonelyAdventurer> Can I ask for help with a piece of code?
<beach> Absolutely.
metallicus has quit [Ping timeout: 268 seconds]
<beach> If your questions become truly trivial, you may get redirected to #clschool.
<beach> Oh, and if your code is more than one line long, please use a paste site.
<beach> Like plaster.tymoon.eu for instance.
<LonelyAdventurer> No, it's a weird one line
<beach> Go right ahead then.
<LonelyAdventurer> (< i +some-constant+) it says that "<" is unbound
<LonelyAdventurer> I'm using SBCL behind roswell on Windows, although I don't think this is the issue.
<beach> That ought to work if this code snippet is a form, i.e., in a position to be evaluated.
<LonelyAdventurer> yeah
<LonelyAdventurer> I'm sending the whole form
<Shinmera> Did you forget to (:use :cl) in your package definition
<LonelyAdventurer> here it is
<LonelyAdventurer> nope, it says undefined variable: COMMON-LISP:<
<beach> Your indentation is wrong.
<LonelyAdventurer> it's how Emacs indents it
<beach> So this is not a form, but part of the DO variable clauses.
<jackdaniel> you've put (< i +register-count+) in the test position of do
<beach> LonelyAdventurer: I seriously doubt that. You must not be using Lisp mode.
<LonelyAdventurer> I'm using Lisp mode
<jackdaniel> in other words: "when < is not nil …"
<jackdaniel> then evaluate i and +registers-count+
<LonelyAdventurer> It's exactly what I want
<jackdaniel> not really
<jackdaniel> you want there ((< i +registers-count+) :finished!)
<LonelyAdventurer> I want to loop the setf as long as i is less than +registers-count+
<LonelyAdventurer> uh?
<jackdaniel> that is 'when (< i +registers-count+) is not nil, then …'
<LonelyAdventurer> doesn't < return nil if the condition is false?
<beach> LonelyAdventurer: I have no explanation for the bad indentation.
<jackdaniel> and even the other way around
<jackdaniel> so (do … ((>= i +registers-count+)) …)
<LonelyAdventurer> it says that >= is undefined
<LonelyAdventurer> this is confusing me
<jackdaniel> put another pair of parenthesis around your test
<jackdaniel> just as I've suggested
<jackdaniel> i.e not (do … (>= …) …) but (do … ((<= …)) …)
<jackdaniel> s/<=/>=/
<splittist> LonelyAdventurer: all the parenthesis matter. I know it's tempting when starting with lispy syntax to randomly add and remove them, but they all have a meaning.
<splittist> s/thesis/theses/
<LonelyAdventurer> I used (describe 'do) to check that
<LonelyAdventurer> maybe I'm misreading here?
<LonelyAdventurer> DO ({(Var [Init] [Step])}*) (Test Exit-Form*) Declaration* Form*
<LonelyAdventurer> ohhhhh I see now
<LonelyAdventurer> the Test is wrapped, okay.
<jackdaniel> also, the key to indent form in emacs is [tab], perhaps you have not pressed it, because that indentation made me count parentheses (and that is silly :)
<LonelyAdventurer> I did use tab
<kagevf> pjb: scymtym: (format nil "~/indefinite-article/ ~a" word) from earlier where indefinite-article is a custom function, does indefinite-article (or any thing inside of ~/.../) need to take 4 arguments?
<jackdaniel> then probalby some hacker corrupted your emacs to do the indentation wrong
<beach> We need to find out why the indentation doesn't wor.
<LonelyAdventurer> I'm using the emacs configured by roswell
<beach> k
<LonelyAdventurer> maybe roswell sets some indentation rules I'm not aware about
<jackdaniel> doubtfully, it skrews up the environment but in other (much more subtle) ways
<_death> you can call emacs function indent-sexp (usually bound to C-M-q) at the beginning of the form and see if anything changes
<LonelyAdventurer> let's see
karlosz has quit [Read error: Connection reset by peer]
karlosz has joined #commonlisp
<LonelyAdventurer> no variations to the form
ec has joined #commonlisp
<LonelyAdventurer> wait a minute
<_death> in this case, it's because your paste contains tabs
<LonelyAdventurer> my paste?
<jackdaniel> then the only explanation left are scary hackers :) /me leaves the office, see you \o
<LonelyAdventurer> actually
<LonelyAdventurer> I realized that the bin I pasted had some missing whitespace
<_death> yes.. the paste site uses 4 spaces, while your emacs probably uses 8
<LonelyAdventurer> what I have in emacs is not the same
<LonelyAdventurer> lol
<LonelyAdventurer> yeah
<LonelyAdventurer> ahahahha silly me
<_death> in general, lisp code should not use tabs
<beach> LonelyAdventurer: I would configure Emacs so that it never uses TABs.
<LonelyAdventurer> yeah, I'm doing it
<LonelyAdventurer> formatting is important
<scymtym> kagevf: yes, the stream, the argument and two arguments for the "flags", that is ~: and ~@
<LonelyAdventurer> thank you beach, _death, jackdaniel.
<beach> Pleasure.
<pjb> kagevf: see clhs ~/ for the details.
Noisytoot has quit [Excess Flood]
Noisytoot has joined #commonlisp
ec has quit [Ping timeout: 258 seconds]
<kagevf> scymtym pjb : ok, thank you, that's what I thought
makomo has joined #commonlisp
Cymew has quit [Ping timeout: 244 seconds]
<pjb> Note, you can also use ~( : (format nil "~@(~/fmt-indefinite-article/ ~a~)" "old" "hat") #| --> "An old hat" |#
<kagevf> pjb: thank you for that pastebin ... I don't think I would've come up with that on my own ... and I'll have to clhs ~( not familiar with it ...
<kagevf> ah! case conversion .... I remember now :)
<_death> a umbrella
* kagevf uses fmt-indeifite-article as the basis to make a grammarly rival :p
metallicus has joined #commonlisp
LonelyAdventurer has left #commonlisp [#commonlisp]
metallicus has quit [Quit: Leaving]
<jcowan> kagevf: After a wholesale change in terminology, I had to use the regex /an [bcdfghjklmnprstvwxyz/ to find and fix all the uses of "an new", and even that is imperfect"
<jcowan> (and similar phrases)
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
MajorBiscuit has quit [Ping timeout: 265 seconds]
Noisytoot has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
jolby has joined #commonlisp
<splittist> I gave a one dollar bill to a unicorn outside an hotel.
<kagevf> jcowan: how did "an" get in front of new? was it the result of an automated rule gone awry, or was it a human/manual mistake? and did you use cl-ppcre?
<jcowan> I changed "X" to "Y" throughout a document where X began with a vowel sound and Y did not
<jcowan> So yes, an automated rule gone awry, but a rule that I myself created on the spot
<jcowan> a corresponding term changing "Z" to "E" left me with a lot of "a E" phrases
gxt has quit [Ping timeout: 258 seconds]
<jcowan> and no, my editor was not written in CL
gxt has joined #commonlisp
<kagevf> jcowan: cl-ppcre is a package for regex ... can be used in any editor :) what editor do you use?
<jcowan> 'ex'
<jcowan> (with occasional switches to vi mode to bounce on the % key)
<kagevf> is ex the same as "command mode" in vim??
<kagevf> well, maybe not same ... let me rephrase: "is ex what vim's command mode is based on?"
* ober would have bet edlin
<kagevf> hmmm ... on my system "ex" maps to /usr/bin/vim.basic ...
<kagevf> not sure if that's real "ex" or not ... any advantages to using ex to edit CL?
_cymew_ has joined #commonlisp
lagash has quit [Ping timeout: 248 seconds]
livoreno has quit [Ping timeout: 244 seconds]
<ober> CL can all be in a single line...
waleee has quit [Quit: WeeChat 3.6]
livoreno has joined #commonlisp
jeosol has quit [Quit: Client closed]
waleee has joined #commonlisp
pjb has quit [Read error: Connection reset by peer]
jolby has quit [Quit: Client closed]
skeemer has quit [Remote host closed the connection]
notzmv has joined #commonlisp
skeemer has joined #commonlisp
orestarod has joined #commonlisp
livoreno has quit [Ping timeout: 268 seconds]
jolby has joined #commonlisp
Guest69 has joined #commonlisp
<Guest69> Hi, someone has the experience of compiling ZS3 or CXML for android? getting weird error
<jcowan> kagevf: ex and vi are Siamese twins
<jcowan> and yes, ex-mode is vim's "command mode"
<jcowan> I usually start vim as "ex", which brings it up in command mode
waleee has quit [Ping timeout: 268 seconds]
<jcowan> The only advantage for me in using ex is that it has been built into my fingers for the past 30+ years
<jcowan> I no longer think about what I am doing at the finger-macro level, only at the higher level
cage has joined #commonlisp
makomo_ has joined #commonlisp
chipxxx has joined #commonlisp
lagash has joined #commonlisp
Noisytoot has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
enzuru has joined #commonlisp
rogersm has quit [Quit: Leaving...]
<kagevf> +1 for being able to use the same editor for +30y :) ... 30 years ago I used a DOS based editor called VZ ... I think it's long gone, though haha ... vim and text objects are great, like vanilla emacs handling of sexps a lot too :)
defaultxr has joined #commonlisp
_cymew_ has quit [Ping timeout: 265 seconds]
migap_ has joined #commonlisp
luis6 has joined #commonlisp
thuna` has joined #commonlisp
luis has quit [Ping timeout: 248 seconds]
luis6 is now known as luis
igemnace has quit [Remote host closed the connection]
thuna` has quit [Remote host closed the connection]
thuna` has joined #commonlisp
thuna` has quit [Ping timeout: 264 seconds]
<aeth> technically, it's #'1+ not #'+1
epolanski has quit [Quit: Connection closed for inactivity]
<aeth> You can still use old DOS editors in DOSBox, but you won't get UTF-8, support for larger screen sizes, etc. It probably wouldn't be fun to edit Lisp with this.
<jcowan> DOSBox is fine with fairly big screen sizes if you tweak the config files. Of course, they are grainy.
<jackdaniel> (bosdox #'ed *file*)
<kagevf> aeth: I used a reader macro :p
_cymew_ has joined #commonlisp
Lord_of_Life_ has joined #commonlisp
_cymew_ has quit [Ping timeout: 260 seconds]
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life_ is now known as Lord_of_Life
cosimone has quit [Ping timeout: 244 seconds]
aartaka has joined #commonlisp
thuna` has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
ec has joined #commonlisp
pjb has joined #commonlisp
jolby2 has joined #commonlisp
jolby has quit [Ping timeout: 252 seconds]
tyson2 has joined #commonlisp
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
attila_lendvai_ has quit [Ping timeout: 252 seconds]
gateway2000 has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 265 seconds]
aartaka has joined #commonlisp
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
chipxxx has quit [Read error: Connection reset by peer]
pve has quit [Quit: leaving]
aartaka has quit [Ping timeout: 265 seconds]
eddof13 has joined #commonlisp
waleee has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
tyson2 has quit [Remote host closed the connection]
Guest1758 has quit [Quit: WeeChat 3.6]
Brucio-61 has quit [Ping timeout: 268 seconds]
scymtym has quit [Ping timeout: 264 seconds]
Noisytoot has quit [Quit: ZNC 1.8.2 - https://znc.in]
attila_lendvai has joined #commonlisp
Noisytoot has joined #commonlisp
jmdaemon has joined #commonlisp
tyson2 has joined #commonlisp
Noisytoot has quit [Remote host closed the connection]
aartaka has joined #commonlisp
zyni-moe has joined #commonlisp
Brucio-61 has joined #commonlisp
scymtym has joined #commonlisp
zyni-moe has quit [Quit: died]
aartaka has quit [Ping timeout: 265 seconds]
Noisytoot has joined #commonlisp
jolby2 has quit [Quit: Client closed]
jeosol has joined #commonlisp
Algernon69 has joined #commonlisp
Algernon69 has quit [Client Quit]
shka has quit [Ping timeout: 244 seconds]
<jcowan> Tell me if this is right. You can create a symbol whose home package is an existing package and then change its home package to be NIL. You can create a symbol whose home package is NIL and change its home package to some existing package. But that's it. You cannot, for example, directly change the home package from package p1 to package p2.
* jcowan thinks that's probably a silly question
<kagevf> jcowan: you can call unintern and intern, each with a symbol as an argument ... so that answers 2 of your questions
<kagevf> as for the 3rd question, don't quote me on it, but I'm guessing instead of re-assignment you would shadow a symbol
<gin> are operations on alist thread-safe in CL? or is it unspecified?
<Shinmera> search the cl spec for "thread" and you'll find zero occurrences.
<Shinmera> does that answer your question?
jolby has joined #commonlisp
jeosol has quit [Quit: Client closed]
cosimone has joined #commonlisp
<_death> often an alist is not modified in any way, so there's no need to restrict use.. if however you store a reference to an alist that you do modify, that requires protection
<jcowan> kagevf: Well, you can unintern and then intern, which is why I said the 3rd question was silly
Guest69 has quit [Ping timeout: 252 seconds]
selfish has joined #commonlisp
tevo has quit [Read error: Connection reset by peer]
semz has quit [Quit: ZNC 1.7.5+deb4 - https://znc.in]
semz has joined #commonlisp
<_death> (defun move-symbol (symbol new-package) (let ((old-package (symbol-package symbol)) (new-package (find-package new-package))) (when old-package (unintern symbol old-package)) (when new-package (import symbol new-package)) symbol))
<jcowan> Just so, thanks.
<Nilby> that saves the eq'ness of the symbol, but instead of new-package::symbol you have #:symbol, and more weird (symbol-package new-package::symol) => nil
<_death> ?
<_death> (symbol-package (move-symbol (gensym) "FOO")) => #<PACKAGE "FOO">
sjl has joined #commonlisp
<jcowan> Yes, that doesn't sound right to me.
<jcowan> What it does mean is that there is no unique natural label for a symbol: you would have to gensym one and put it on the p-list, or something like that.
<kagevf> what if MOVE-SYMBOL used INTERN instead of IMPORT?
<_death> intern finds or creates a symbol with a given name
<kagevf> and import only finds?
<_death> no..
<_death> clhs import
<Nilby> hmmm. i reversed the order of int unintern and import
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<kagevf> hmmm ... it seems like they'd be interchangeable in MOVE-SYMBOL ... if there's a nuance I'm not getting it (clhs'd both import and intern)
<_death> well, try it..
<mathrick> why does ASDF die with COMPILE-ERROR if a macro WARNs during expansion? I can load my system just fine using QL:QUICKLOAD, but if I use ASDF:LOAD-SYSTEM, it fails
<mathrick> I have a warning in a macro to remind myself that I'm not done writing it, but that apparently completely kills ASDF loading
<_death> asdf:*compile-file-failure-behaviour*
<_death> you may signal a style warning instead..
<mathrick> ugh
<kagevf> I will try it later
<mathrick> damn you, ANSI CL
<jcowan> It's definitely weird that unintern and intern are not counterparts, but they aren't
<mathrick> _death: thank you though! I hate the fact ANSI CL defined it that way, but I appreciate your help :)
<_death> mathrick: what? what non-style warnings are a kind of failure?.. if it's just your personal code base you can set asdf:*compile-file-failure-behaviour* to :warn in your rc file
jolby has quit [Quit: Client closed]
<mathrick> "The tertiary value, failure-p, is false if no conditions of type error or warning (other than style-warning) were detected by the compiler, and true otherwise."
<mathrick> this is a definition of failure set by the standard
<_death> correct
<mathrick> and I'm unhappy, because I want this warning to be more prominent than a style warning, but not so serious that it fails the compilation
<mathrick> and CL does not have a value for that
<_death> clhs 3.2.5
<specbot> Exceptional Situations in the Compiler: http://www.lispworks.com/reference/HyperSpec/Body/03_be.htm
orestarod has quit [Ping timeout: 250 seconds]
<mathrick> oh well, I guess I'll just have to make it a style-warning
<mathrick> also, what's the proper way to emit a STYLE-WARNING?
<_death> (define-condition bad-hair-day (style-warning) ()) (warn 'bad-hair-day)
<kagevf> when I run (symbol-package (move-symbol (gensym) "FOO")) it just returns nil ... I also tried 'FOO instead of "FOO" ...
<kagevf> jcowan: in what kind of scenario would you need to move a symbol?
<_death> kagevf: you should make sure to (defpackage "FOO" (:use)) first
<kagevf> dah!! my understanding of the args was flipped ...
<mathrick> oh, there's UIOP:STYLE-WARN
<mathrick> which works like CL:WARN
<kagevf> still get NIL, plus I had to use (string) on the gensym for the arg to intern
<_death> kagevf: do you mean with your version that tries to use INTERN?
<kagevf> oh crap ... it was supposed to be import ... sorry
gateway2000 has joined #commonlisp
<kagevf> finally! woo-hoo ... now why didn't intern work ... hmmmm
<_death> intern maps from a name (a string) to a symbol.. it may create a symbol but otherwise can't change anything with regards to one
epony has quit [Ping timeout: 252 seconds]
<kagevf> let me re-clhs intern ...
<kagevf> I don't get it ... in clhs "intern enters a symbol named string into package" ... so it seems like (symbol-package (progn (intern symbol package) symbol)) should work, but it doesn't
<_death> read what I just wrote
<kagevf> oh wait ... is it because (eq (string symbol) symbol) isn't true??
<kagevf> I read what you wrote, but I still don't get it ...
<_death> a symbol is an object that has a name.. names of symbols are strings
<kagevf> right
<_death> intern takes a string and an optional package.. if it finds a symbol that has a name matching the string in the package, it returns it.. otherwise it creates one
<_death> so intern can "change" a package (not a symbol) by creating a symbol "in it", that is, the symbol has the package as its home package
eddof13 has joined #commonlisp
<_death> import can also "change" a package, by making an already existing symbol present in it.. but it may also "change" a symbol by setting its home package
<kagevf> _death: so ... does that mean intern updates a package's list of symbols, but does NOT update whatever SYMBOL-PACKAGE reads on that symbol?
<_death> unintern, like import, deals with existing symbols and may "change" both a package and the symbol
random-nick has quit [Ping timeout: 260 seconds]
<_death> kagevf: right.. it's like (or (find-symbol ...) (import (make-symbol ...) ...))
<kagevf> oh, wow ... ok ... thank you for patiently epxlaining all that ... this definitely is going into my notes
<_death> (simplified; return value etc. should be fixed)
<_death> I remember the book Common Lisp Recipes had a good discussion about symbols and packages (nevermind my general opinion about it :)
<_death> another one may be in CLtL2
causal has quit [Quit: WeeChat 3.6]
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<mathrick> is there any way to silence all the noise of ASDF loading and compilation when I call ASDF:TEST-SYSTEM? I couldn't find any proper mechanism of doing it, and from what I can tell, Quicklisp just hacks its way by binding *STANDART-OUTPUT*, which doesn't really seem like an option here
<jcowan> kagevf: I don't think you would; the question was whether it is possible to do so, and the answer is yes.
<jcowan> therefore the home package is not a stable property of a symbol in the way that its name is
<jcowan> it is not even quasi-stable in the sense that it is either nil or some fixed package
<jcowan> it can, during its lifetime, have any number of home packages one at a tme.
<jcowan> time
perrierjouet has quit [Quit: WeeChat 3.6]