jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.5.4, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
aautcsh has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
t58 has quit [Quit: Leaving]
aautcsh has joined #lisp
matzy_ has joined #lisp
<moldybits> i didn't interpret it in a programming language context
gabbiel has quit [Ping timeout: 245 seconds]
gabbiel has joined #lisp
wigust has joined #lisp
catchme has joined #lisp
wigust- has quit [Ping timeout: 244 seconds]
longshi has quit [Ping timeout: 244 seconds]
xkapastel has joined #lisp
Oladon has quit [Quit: Leaving.]
<gabbiel> question, how do I make the reader macro public in my package?
<no-defun-allowed> It always is.
<Bike> reader macros don't have a public/non public concept like packages. they're j ust enabled or not.
<no-defun-allowed> If you want the opposite, you should look into a named-readtable.
<Bike> usually you have an enable-syntax disable-syntax fucntion pair, or use a library like named-readtables
makomo has quit [Ping timeout: 245 seconds]
<gabbiel> oh oh, thanks guys
gabbiel has quit [Remote host closed the connection]
matzy_ has quit [Remote host closed the connection]
gabbiel has joined #lisp
EvW1 has quit [Ping timeout: 250 seconds]
anewuser has quit [Ping timeout: 272 seconds]
gabbiel has quit [Ping timeout: 258 seconds]
pauljb has joined #lisp
pauljb has quit [Remote host closed the connection]
semz has quit [Ping timeout: 264 seconds]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 258 seconds]
semz has joined #lisp
semz has quit [Changing host]
semz has joined #lisp
parab has quit [Quit: parab]
teej has quit [Quit: Connection closed for inactivity]
Oladon has joined #lisp
libertyprime has quit [Quit: leaving]
mkrauss has joined #lisp
permagreen has joined #lisp
parab has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
libertyprime has joined #lisp
<drmeister> If I have a class foo that inherits from bar and I want to make an instance of foo from an instance of bar what is the best way to do that without accessing every slot of bar and initializing slots of foo?
<drmeister> I don't want to change-class the instance of bar because that might surprise others that use the instance of bar.
<drmeister> class foo also inherits from some other new classes.
<White_Flame> if you don't want to copy those fields, it sounds like you might want a proxy class, which defers slot lookups of the foo object to the bar object?
<no-defun-allowed> Just want to check my understanding of the relevant part of the MOP: when a class is defined for the first time, initialize-instance is called on it, and when it's redefined, then reinitialize-instance is used?
<DrDuck> what is the best c generator/transpiler library?
<no-defun-allowed> DrDuck: (when (zerop (random 10)) (write-line "Segmentation fault, core dumped") (sb-ext:exit)) is my favourite
<DrDuck> i was hoping there was an existing safe c generator :[
<no-defun-allowed> ECL perhaps?
<Bike> no-defun-allowed: pretty much, re classes
<Bike> it goes through ensure-class-using-class, which calls reinitialize-instance by default i think
<no-defun-allowed> Right, is there then anywhere in particular I should put a test to check if there are any slots in the class with some duplicate values?
<Bike> duplicate values?
<no-defun-allowed> I read that there's forwarded classes and I can really only check after all those are resolved.
<Bike> that's class finalization, which happens at a different time
<DrDuck> not quite what i'm looking for, no-defun-allowed, but thanks for the reference
<no-defun-allowed> Gotcha.
<Bike> all the slots of a class are only known once all the slots are known for its superclasses
gabbiel has joined #lisp
<Bike> so if you have a forward referenced class where you don't know the slots, no good
<no-defun-allowed> Yeah, that's what I'm worried about.
<Bike> finalization happens sometime between the defclass being evaluated and the first make-instance call with the class
<Bike> i don't understand what you want to check, though
<no-defun-allowed> Hmm, I guess I can settle for checking during finalization.
<Bike> but what are you checking
<no-defun-allowed> Oh, in my library I have additional names in slots for serialization (very similar to json-mop) and I'd like to be sure that classes never have slots with the same serialized name.
<Bike> i see. that might be good to put in a compute-slots method.
<no-defun-allowed> (Then I should probably set up a table of serialized names to slot names, to make lookups a little faster, but that can wait until I have everything else working correctly.)
<no-defun-allowed> Alright, that looks good. Thanks Bike
<gabbiel> should I name my cat CAR or LAMBDA ?
<no-defun-allowed> Probably not.
<aeth> cond
liberiga has joined #lisp
<White_Flame> destructuring-bind
<gabbiel> aeth: cond sounds weird, idk about that one
<aeth> least-negative-normalized-double-float
<gabbiel> lmao
<gabbiel> hmm, FLET, CAR, or LAMBDA
<White_Flame> (btw, #lispcafe needs more lisp humor, while people demand on-topicness here)
<gabbiel> srry
<beach> Good morning everyone!
<no-defun-allowed> Good morning beach!
<gabbiel> hi beach
<aeth> good morning beach
<no-defun-allowed> "mod" has the shortest edit distance to "meow" in the CL package, so maybe that's a good name for a cat.
voldial has quit [Quit: WeeChat 1.0.1]
<gabbiel> no-defun-allowed: thats a good one, ill keep that in mind
<no-defun-allowed> "kitty" is closest to "listp"...somehow.
<beach> Aha, a new chapter in Dyomkins's book to proofread today.
Bike has quit [Quit: Lost terminal]
<gabbiel> listp sounds like "listpee", which is nice to say and sounds like "lispy"
<no-defun-allowed> That word hurts my ears.
parab has quit [Quit: parab]
pierpal has joined #lisp
shrdlu68 has joined #lisp
libertyprime has quit [Ping timeout: 258 seconds]
milanj has quit [Quit: This computer has gone to sleep]
gioyik has joined #lisp
dddddd has quit [Remote host closed the connection]
<gabbiel> xb
<no-defun-allowed> Like I imagine some normie creeping out of the bushes into a pseudophysical representation of /r/lisp, then taking off their coat going "what's UP GUYS, check out THIS LISPY LANGUAGE i made" and everyone's just going "eww that's disgusting, put some clothes on".
<gabbiel> why r u imagining this
<no-defun-allowed> Happens about every month.
<gabbiel> but why
<aeth> fortunately this channel is only about Common Lisp so we only do real work here instead of bikeshedding about toy languages, like what can happen in places about Lisps in general
<aeth> toy Lisps are common because you don't have to spend too much work on the parser
<no-defun-allowed> Though, "lispy" could also be talking about program design in a way, like if you're arguing if LOOP is any good, since it's simultaneously a very fancy macro showing off being able to use all of CL at compile time and also hot flaming garbage because it's a sludge of infix keywords and pseudo-English
<no-defun-allowed> That use is tolerable, though it still sounds bad in my head, and I would rather use a more descriptive word.
<aeth> idiomatic
<no-defun-allowed> aeth: Yeah, that's better.
lavaflow has joined #lisp
<LdBeth> Hello lispy
* no-defun-allowed covers her ears
milanj has joined #lisp
<aeth> lis.py
Ricchi has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
libertyprime has joined #lisp
<aeth> the typical Lisp programmer in documentation examples should have the name Liz P.
mkrauss has quit [Ping timeout: 276 seconds]
torbo has quit [Remote host closed the connection]
<ck_> aeth: she already does -- Alissa P. Hacker
gravicappa has joined #lisp
sindan has quit [Remote host closed the connection]
sindan has joined #lisp
aoeu256 has quit [Read error: Connection reset by peer]
aoeu256 has joined #lisp
<aeth> ck_: you're absolutely right
<aeth> how could I have forgotten?
saravia has quit [Remote host closed the connection]
shrdlu68 has quit [Ping timeout: 245 seconds]
lalitmee has joined #lisp
liberiga has quit [Ping timeout: 260 seconds]
gioyik has quit [Ping timeout: 258 seconds]
gioyik has joined #lisp
Oladon has quit [Quit: Leaving.]
jello_pudding has joined #lisp
Necktwi has joined #lisp
shka_ has joined #lisp
lalitmee has quit [Remote host closed the connection]
lalitmee has joined #lisp
shrdlu68 has joined #lisp
abhixec has quit [Ping timeout: 245 seconds]
jello_pudding has quit [Remote host closed the connection]
SaganMan has joined #lisp
JohnMS_WORK has joined #lisp
gxt has quit [Ping timeout: 260 seconds]
jprajzne has joined #lisp
aoeu256 has quit [Ping timeout: 244 seconds]
mingus has joined #lisp
shka_ has quit [Ping timeout: 268 seconds]
dale has quit [Quit: My computer has gone to sleep]
lalitmee has quit [Remote host closed the connection]
lalitmee has joined #lisp
vlatkoB has joined #lisp
lalitmee has quit [Max SendQ exceeded]
lalitmee has joined #lisp
lalitmee has quit [Max SendQ exceeded]
lalitmee has joined #lisp
gabbiel has quit [Read error: Connection reset by peer]
gabbiel has joined #lisp
varjag has joined #lisp
gxt has joined #lisp
gabbiel has quit [Read error: Connection reset by peer]
orivej has joined #lisp
techquila has quit [Read error: Connection reset by peer]
ltriant has quit [Quit: leaving]
permagreen has quit [Remote host closed the connection]
aautcsh has quit [Read error: Connection reset by peer]
scymtym has joined #lisp
random-nick has joined #lisp
elderK has quit [Quit: WeeChat 1.9]
frgo has quit [Ping timeout: 245 seconds]
elderK has joined #lisp
makomo has joined #lisp
manualcrank has quit [Quit: WeeChat 1.9.1]
milanj has quit [Quit: This computer has gone to sleep]
shka_ has joined #lisp
lalitmee has quit [Ping timeout: 245 seconds]
Insanity_ has joined #lisp
bendersteed has joined #lisp
vaporatorius has quit [Read error: Connection reset by peer]
ggole has joined #lisp
Lord_of_Life has quit [Ping timeout: 258 seconds]
Lord_of_Life has joined #lisp
orivej has quit [Ping timeout: 268 seconds]
lalitmee has joined #lisp
cosimone has joined #lisp
SaganMan has quit [Ping timeout: 268 seconds]
longshi has joined #lisp
cosimone has quit [Quit: Leaving]
galdor1 has quit [Read error: Connection reset by peer]
galdor1 has joined #lisp
cosimone has joined #lisp
cosimone has quit [Client Quit]
kajo has quit [Ping timeout: 276 seconds]
kajo has joined #lisp
zotan has quit [Quit: ZNC 1.6.5+deb1+deb9u2 - http://znc.in]
mingus has quit [Remote host closed the connection]
gxt has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
patrixl has quit [Remote host closed the connection]
tourjin has joined #lisp
<tourjin> under interpreter execution gnu clisp and sbcl lisp print out answer line (+ 2 3) but under script execution like clisp myscript they don't print out anything. I have to print it with (princ (+ 2 3)) . why is that? iterpreter show me output but script don't.
<no-defun-allowed> Probably because when entering forms into a REPL, the -P- for print is run implicitly, but when loading a file, it is not.
t58 has joined #lisp
<pjb> tourjin: you have a misconception here.
<tourjin> so everytime I execute my scripts, should I always use princ or something like that?
<pjb> tourjin: you're believing that the technology used to implement the evaluator has any importance on the semantics of the language.
<pjb> tourjin: while there are indeed some semantic differences that are allowed between running code on an interpreter or thru a compiler, code where those differences are demonstrated is not conforming.
<pjb> tourjin: for example, it is most probably that sbcl doesn't use an interpreter to evaluate (+ 2 3).
<pjb> tourjin: the notion that you are missing here, is the notion of REPL = Read Eval Print LOOP.
<pjb> tourjin: I meana, in this case: Read Eval PRINT Loop.
<pjb> tourjin: basically (loop (print (eval (read)))) you may try it in the REPL ;-)
<pjb> tourjin: the other part of the answer, is clhs load which explains the algorith for LOAD, which is basically a REP = Read Eval Loop. (loop (eval (read))) ; you may also try it in the REPL.
<pjb> Of course, you can compare (loop (print (eval (read)))) with (loop (eval (read))) and tell what difference there is (I assume).
<pjb> tourjin: now the final step, is to consider that running a "script" in an implementation (which is something that is not specified by the CL standard), is most probably implemented using LOAD, and therefore use the REP.
alexanderbarbosa has quit [Remote host closed the connection]
<tourjin> ok interpreter and script execution are not same as I imagined. clhs... what is that?
<beach> Common Lisp HyperSpec
<tourjin> thanks
milanj has joined #lisp
aoeu256 has joined #lisp
<tourjin> pjb u recommended me sbcl is one of the most popular lisp so i installed it on my windows10. I googled it and found nobody succeded installing it on wsl. can't I install it on my wsl.
<no-defun-allowed> Don't use WSL then, just stick to pure Windows in that case.
knicklux has joined #lisp
<no-defun-allowed> And then you probably should use a nice IDE like Portacle <https://portacle.github.io/> to save some more time setting up Quicklisp, Emacs, &c.
<tourjin> clhs is some sort of standard rules for lisp. I learned something new today. thanks guys. wow that's large file.
<pjb> tourjin: I heard that some patches have been made to sbcl to have it run on wsl.
trocado has joined #lisp
<pjb> tourjin: the version 1.5.6 is just released, you may try it.
<tourjin> ok thanks no-defun-allowed. i don't know anything about emacs. u'r not telling me I can't keep learning lisp with vim?
<pjb> tourjin: clhs is not some sort of standard rules, it IS the ANSI Common Lisp STANDARD!
<tourjin> yes pjb u told me that before but yet I could'nt find it.
<pjb> tourjin: basically, it's the contract between an implementation and a user program, that tells what an implementation must do to be conforming, and what a program must do to be conforming, and that if you run a conforming program on a conforming implementation you will always obtain the same result.
<tourjin> yes pjb I meant it about clhs. sorry for my poor english.
<tourjin> thanks guys.
<tourjin> i'll try 1.5.6 version. thanks pjb
<no-defun-allowed> You can learn Emacs with Vim, but I haven't tested VLIME to see if it's comparable to SLIME, and I don't know how to exit Vim either.
<tourjin> i gotto go out for dinner. bye and thanks.
trocado has quit [Read error: Connection reset by peer]
trocado has joined #lisp
Lycurgus has joined #lisp
benderst` has joined #lisp
bendersteed has quit [Ping timeout: 248 seconds]
kajo has quit [Ping timeout: 276 seconds]
tdleffler has joined #lisp
<Xach> beach: it does not support opentype fonts yet, sorry.
<Xach> beach: many opentype fonts are thin wrappers around truetype fonts, so in theory it should be easy to support, but i did not find the time to do it in 2008
trocado has quit [Read error: Connection reset by peer]
trocado has joined #lisp
<beach> Xach: I understand.
<beach> And this particular font is not a thin wrapper. It uses cubic splines (CCF? CFF? I forget).
trocado has quit [Read error: Connection reset by peer]
catchme has quit [Quit: Connection closed for inactivity]
tourjin has quit [Ping timeout: 245 seconds]
papachan has joined #lisp
vaporatorius has joined #lisp
vaporatorius has quit [Changing host]
vaporatorius has joined #lisp
tdleffler has quit []
aoeu256 has quit [Ping timeout: 258 seconds]
aoeu256 has joined #lisp
notzmv has quit [Ping timeout: 245 seconds]
benderst` is now known as bendersteed
bendersteed has quit [Changing host]
bendersteed has joined #lisp
longshi has quit [Quit: WeeChat 2.5]
h11 has quit [Quit: The Lounge - https://thelounge.chat]
mingus has joined #lisp
dddddd has joined #lisp
thawesWork has joined #lisp
aoeu256 has quit [Ping timeout: 268 seconds]
Arcaelyx has joined #lisp
mingus has quit [Remote host closed the connection]
aoeu256 has joined #lisp
JohnMS_WORK has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
lalitmee has quit [Remote host closed the connection]
aoeu256 has quit [Ping timeout: 268 seconds]
h11 has joined #lisp
Arcaelyx has quit [Quit: Arcaelyx]
ebrasca has joined #lisp
eschulte has quit [Quit: leaving]
kajo has joined #lisp
aoeu256 has joined #lisp
shrdlu68 has quit [Ping timeout: 248 seconds]
mindCrime_ has joined #lisp
jprajzne has quit [Quit: Leaving.]
Bike has joined #lisp
LiamH has joined #lisp
nanoz has joined #lisp
LiamH has quit [Read error: Connection reset by peer]
LiamH has joined #lisp
xkapastel has joined #lisp
frgo has joined #lisp
lucasb has joined #lisp
Inline has joined #lisp
q9929t has joined #lisp
tourjin has joined #lisp
galdor1 is now known as galdor
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
wigust has quit [Ping timeout: 244 seconds]
wigust has joined #lisp
dale_ has joined #lisp
dale_ is now known as dale
scymtym has quit [Ping timeout: 264 seconds]
Oladon_wfh has joined #lisp
orivej has quit [Ping timeout: 272 seconds]
makomo_ has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
tourjin has quit [Ping timeout: 244 seconds]
tourjin has joined #lisp
papachan has quit [Quit: Leaving]
shrdlu68 has joined #lisp
tourjin has quit [Ping timeout: 248 seconds]
bendersteed has quit [Remote host closed the connection]
rippa has joined #lisp
aoeu256 has quit [Ping timeout: 272 seconds]
Lycurgus has quit [Quit: Exeunt]
aoeu256 has joined #lisp
ebrasca has quit [Remote host closed the connection]
frgo has quit [Remote host closed the connection]
superkumasan has joined #lisp
frgo has joined #lisp
Achylles has joined #lisp
sz0 has joined #lisp
Retropikzel has left #lisp [#lisp]
libertyprime has quit [Quit: leaving]
orivej has joined #lisp
aautcsh has joined #lisp
frgo_ has joined #lisp
frgo has quit [Ping timeout: 268 seconds]
gareppa has joined #lisp
yoeljacobsen has joined #lisp
gareppa has quit [Quit: Leaving]
orivej has quit [Ping timeout: 245 seconds]
frgo_ has quit [Remote host closed the connection]
ravenous_ has joined #lisp
<bmansurov> o/ How can I specify elements of a list as a slot type? I'm thinking of something like `:type (list string)`, but that doesn't work. Is it possible?
Insanity_ has quit [Quit: Connection closed for inactivity]
varjag has joined #lisp
shka_ has quit [Ping timeout: 272 seconds]
orivej has joined #lisp
<Bike> bmansurov: not really, no.
<bmansurov> Bike: oh I see. thanks
manualcrank has joined #lisp
khisanth_ has quit [Ping timeout: 244 seconds]
frgo has joined #lisp
cl-arthur has joined #lisp
khisanth_ has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
kajo has quit [Ping timeout: 264 seconds]
cosimone has joined #lisp
shka_ has joined #lisp
<pjb> bmansurov: yes it is possible. As long as you don't use the LIST type, but if you define your own LIST-OF type.
cantstanya has quit [Read error: Connection reset by peer]
varjag has quit [Ping timeout: 252 seconds]
<bmansurov> pjb: can you give me more info about how to write that type?
<pjb> A simple way: (deftype list-of (element-type) `(or null (cons ,element-type t))) then: :type (list-of string)
trafaret1 has joined #lisp
<trafaret1> o/
<Bike> that's not the type, though...
<pjb> but this list-of type tests only the first element of the list (and like LIST, accepts dotted list).
<pjb> So you can define list-of as a satisfies.
<trafaret1> what does it mean &body? how lisp does it handle?
<pjb> trafaret1: it's just a symbol.
<trafaret1> SORRY @body
<pjb> trafaret1: it's used in the syntax of lambda-lists.
<pjb> it's just a symbol. It doesn't mean anything for CL. Read your sources.
<trafaret1> often I see it in macros
<Xach> beach: ah, so it's a wrapper around a PostScript Type 1 font?
<pjb> I've never seen @body in all the lisp code I've seen.
<Bike> trafaret1: then it's part of the ,@ syntax in backquote.
<Bike> clhs `
<pjb> Yes, ,@ body can exist.
<pjb> ,@ expands the elements of the list returned by the following expression.
EvW has joined #lisp
<trafaret1> maybe somebody can give some practicl example of usage ,x and ,@x
<Bike> there are examples in the page i linked.
cantstanya has joined #lisp
<Bike> for example `((,a b) ,c ,@d) is equivalent to (append (list (append (list a) (list 'b) 'nil)) (list c) d 'nil).
cosimone has quit [Quit: Leaving]
<pjb> trafaret1: in practice, it's just a shortcut notation ^
DanmerZ has joined #lisp
<pjb> trafaret1: which means that you can just ignore it and write the (append (list ...)) expressions.
<pjb> trafaret1: but also, in practice, we may have to generate expressions that are stereotyped, with mostly the same contents, and a few places that need to be substituted with runtime values.
<trafaret1> hmm
makomo_ has quit [Ping timeout: 268 seconds]
<pjb> trafaret1: for example: if you want to generate an expression like: (if (some test) (progn (do-something 'XXX) YYY) (progn (do-something-else 'XXX) YYY)) where XXX and YYY will be known only at runtime. You would have a lot of append and list calls to build such an expression.
cosimone has joined #lisp
<pjb> instead, we can write: (let ((XXX 42) (YYY '((print 'hello) (terpri)))) `(if (some test) (progn (do-something ',XXX) ,@YYY) (progn (do-something-else ',XXX) ,@YYY))) #| --> (if (some test) (progn (do-something '42) (print 'hello) (terpri)) (progn (do-something-else '42) (print 'hello) (terpri))) |#
parab has joined #lisp
<pjb> However you have to be careful, since in `(if (some test) (progn (do-something ',XXX) ,@YYY) (progn (do-something-else ',XXX) ,@YYY)) it is not entirely obvious that in the resulting expression, there will be some parts that are immutable, and some parts that are mutable. So you have to consider the whole as immutable.
<trafaret1> If I get your right it's like place which will be filled with some object which will be generated duing runtime
<pjb> Right.
<pjb> Note that in a macro, this will usually be computed at macroexpansion time, to be used as resulting form to compile.
<pjb> This is an example using code, but backquote can also be used to expand data expression.
sauvin has quit [Read error: Connection reset by peer]
<trafaret1> pjb: thanks a lot for clarification
<bmansurov> pjb: thanks
tko has joined #lisp
cosimone has quit [Quit: Leaving]
varjag has joined #lisp
cosimone has joined #lisp
makomo_ has joined #lisp
random-nick has quit [Ping timeout: 268 seconds]
cosimone has quit [Client Quit]
cosimone has joined #lisp
scymtym has joined #lisp
<cl-arthur> Any recommendations for persisting objects? (SBCL)
<Xach> cl-arthur: i use cl-store for that sometimes.
tko has quit [Ping timeout: 276 seconds]
afidegnum has quit [Ping timeout: 244 seconds]
random-nick has joined #lisp
Inline has quit [Quit: Leaving]
afidegnum has joined #lisp
Inline has joined #lisp
<cl-arthur> xach: I'll take a look, thanks.
tko has joined #lisp
<Xach> that is if you mean "persist" in the colloquial way, not in the CS-y way
<cl-arthur> Did mean it colloquially :)
yoeljacobsen has quit [Ping timeout: 245 seconds]
_jrjsmrtn has quit [Ping timeout: 248 seconds]
__jrjsmrtn__ has joined #lisp
sz0 has quit [Quit: Connection closed for inactivity]
xkapastel has quit [Quit: Connection closed for inactivity]
EvW has quit [Ping timeout: 250 seconds]
EvW has joined #lisp
niceplace has quit [Ping timeout: 245 seconds]
Ven`` has joined #lisp
Ven`` is now known as Ven_de_Thiel
<aeth> bmansurov: Another possibility is to write your own cons cells since they're structurally fairly simple. defstruct slot types are usually respected and definitely are in SBCL (but they are not required to be in CL). It's just (defstruct name (car default :type type) (cdr nil :type (or null name))) and the hard part is now you can't use list/sequence functions/macros on it.
<aeth> They will be somewhat slower than conses because they're larger in memory and there might be some runtime checking.
niceplace has joined #lisp
<Xach> Another option is to just not care that much!!
thawesWork has quit [Ping timeout: 245 seconds]
thawesWork has joined #lisp
<nanoz> zagura hi again
<zagura> o/
thawesWork has quit [Ping timeout: 245 seconds]
shrdlu68 has quit [Ping timeout: 248 seconds]
<aeth> Xach: I agree. I brought it up in part just to show how much effort it could be to do it. (Extensible sequences might solve most of that effort at the cost of portability, though.)
filbo has joined #lisp
<aeth> I'm not sure if you saw my message earlier (if you sent a response I didn't notice). Several days ago a JavaScript library added build system ads (which I guess in CL would be like putting ads in compiler warnings/notes for quickload with :verbose t). Novel ads always start out incredibly profitable until they're widespread so they won't be the last to do this. Will Quicklisp forbid this?
<aeth> It might not be an issue with Quicklisp, though, because the download numbers are no longer published and the loading defaults to verbose off.
igemnace has quit [Read error: Connection reset by peer]
ggole has quit [Quit: Leaving]
igemnace has joined #lisp
filbo has quit [Remote host closed the connection]
vlatkoB has quit [Remote host closed the connection]
gravicappa has quit [Ping timeout: 244 seconds]
DanmerZ has quit [Quit: Leaving]
nowhere_man has joined #lisp
<Oladon_wfh> aeth: Ugh, who did that?
<aeth> so now every package manager (eventually) needs a policy on build system ads apparently
<Xach> aeth: I have not thought about it much. My initial feeling is that I would not forbid it, but as a user I would not use libraries like that personally.
<Oladon_wfh> Eww...
<cl-arthur> Eww...
akoana has joined #lisp
ravenous_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
frgo has quit [Ping timeout: 244 seconds]
Lord_of_Life_ has joined #lisp
<Oladon_wfh> That's awful. I sure hope nobody tries to copy that.
Lord_of_Life has quit [Ping timeout: 245 seconds]
Lord_of_Life_ is now known as Lord_of_Life
<aeth> Oladon_wfh: Yes, but after I asked my question I realized it wouldn't work well with modern Quicklisp because Quicklisp no longer publishes its monthly download numbers, and advertisers are probably not going to advertise without metrics unless they're self-advertising (like a commercial implementation being advertised by a library from the same authors)
<Oladon_wfh> aeth: Yeah, I suspect no one would advertise in such a... "small", shall we say, community anyway :)
<aeth> Of course, pretty much all monthly download numbers can and will be gamed if there's profit in gaming it...
<Oladon_wfh> Also true
permagreen has joined #lisp
<Xach> I try not to be too judgemental about how individuals try to make money. Companies irritate me more easily.
<Oladon_wfh> I wonder if we'll ever figure out how to reverse the advertising trend.
wooden has quit [Ping timeout: 245 seconds]
<Oladon_wfh> Eh, I'm not upset that the guy is trying to make money... but c'mon, advertising?
mindCrime_ has quit [Ping timeout: 245 seconds]
<aeth> plenty of people advertise, just usually on things like their documentation pages or whatever.
<Xach> Oladon_wfh: my raw reaction is "that's tacky and distasteful". But I'm coming from a position of comfort and safety, where I don't have to do tacky or distasteful things to eat or have shelter. So I don't know if my initial reaction is the right one.
<aeth> Oladon_wfh: I might even "advertise" other projects of mine on documentation pages if I ever had official documentation pages.
<Oladon_wfh> Xach: I have a really, really hard time believing that anyone who can code — at just about any level — has any excuse that they "have to" do tacky or distasteful things in order to eat or have shelter.
<Xach> Oladon_wfh: It is not so difficult for me to imagine.
<Xach> People who can code are often rejected for non-technical reasons
<aeth> And besides that, coding jobs are only really easy to obtain in the US, and really, only certain parts of the US.
liberiga has joined #lisp
<Xach> Just like Lisp! Rejected despite its obvious technical superiority!!
<Oladon_wfh> Hehe
<Xach> I can't bring this back on topic very easily :(
<Xach> But I'd just say, I would not reject a project that does this without careful consideration.
<Oladon_wfh> We could change the subject and talk about how a company could use Lisp in a production setting, given a shared understanding of the risks therein!
<Oladon_wfh> Though... I have a meeting, so I'll leave you guys to it. :)
<pjb> aeth: you could start by adding ads in the asd files. #.(format *terminal-io* "~&Needs storage space? Go verbatim! https://amzn.to/2U56kb6~%")
<pjb> aeth: good luck finding somebody to pay for your ads (but perhaps not, after all, it's very highly targetted!)
<pjb> What could a lisper want to buy?
<aeth> pjb: It would probably be a great place to advertise Common Lisp jobs.
<aeth> Nothing would be more targeted to where Common Lispers are
<pjb> I don't think lisp companies have really any difficulty to advertise lisp jobns…
<aeth> pjb: I think they do because I rarely see them!
asdf_asdf_asdf has joined #lisp
sonologico has joined #lisp
Oladon_wfh has quit [Remote host closed the connection]
Oladon_wfh has joined #lisp
<Oladon_wfh> Meeting done!
milanj has quit [Ping timeout: 245 seconds]
Bike has quit [Remote host closed the connection]
<cl-arthur> I remember looking for lisp jobs and coming across 'false advertising' listings where they'd just listed lisp amongst a bag of different example programming languages.
<Oladon_wfh> Huh. I've never run into that.
milanj has joined #lisp
spoeplau has joined #lisp
Bike has joined #lisp
techquila has joined #lisp
<cl-arthur> "Advanced experience in general programming skills in one or more of these languages: Java, Javascript, Python, C++, Node.js, LISP, etc."
<Oladon_wfh> o.O
superkumasan has quit [Ping timeout: 245 seconds]
<Oladon_wfh> I feel like that's the beginning of a really good riddle. "What do these languages have in common..."
<cl-arthur> Clearly they're all OOP languages!
Ven_de_Thiel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Oladon_wfh> Heh. Hehehehehe.
asdf_asdf_asdf has quit [Remote host closed the connection]
random-nick has quit [Ping timeout: 246 seconds]
afidegnum has quit [Quit: leaving]
asdf_asdf_asdf has joined #lisp
<no-defun-allowed> "JavaScript is not an object oriented language, it is an object based language. It is a poor imitation of an object system for a poor imitation of a programming language that poor imitations of programmers use to write poor imitations of programs for poor imitations of employers who pay poor imitations of programmers salaries. I think I beat that one to death."
nanoz has quit [Ping timeout: 245 seconds]
trafaret1 has quit [Ping timeout: 244 seconds]
<cl-arthur> Where is that from? :)
<aeth> Has anyone tried to implement JS-style OOP in CL yet?
Bike has quit [Quit: Bike]
varjag has quit [Ping timeout: 245 seconds]
<no-defun-allowed> cl-arthur: Paraphrasing a quote by Jim H. Jacobs from lambda.txt
<no-defun-allowed> aeth: (defun my-class () (list :foo (lambda (self) (getf self :bar)) :bar 42)) (defun method-call (object name) (funcall (getf object name) object))
<cl-arthur> no-defun-allowed: Cheers!
orivej has quit [Ping timeout: 245 seconds]
reggie_ has quit [Remote host closed the connection]
LiamH has quit [Quit: Leaving.]
iovec has joined #lisp
patrixl has joined #lisp
spoeplau has left #lisp ["Killed buffer"]
sjl has quit [Quit: WeeChat 2.2-dev]
hiroaki has joined #lisp
<nydel> howdy all
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
sjl has joined #lisp
cosimone has quit [Quit: Leaving]
<zbrown> o/
ltriant has joined #lisp
cosimone has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
cosimone has quit [Client Quit]
cosimone has joined #lisp
aoeu512 has joined #lisp
aoeu256 has quit [Ping timeout: 245 seconds]
cosimone_ has joined #lisp
cosimone has quit [Remote host closed the connection]
aoeu512 has quit [Ping timeout: 248 seconds]
aoeu256 has joined #lisp
aoeu256 has quit [Ping timeout: 245 seconds]
aoeu256 has joined #lisp
<DrDuck> anyone here use vim for their common lisp environment?
asdf_asdf_asdf has quit [Remote host closed the connection]
cl-arthur has quit [Remote host closed the connection]
Bike has joined #lisp
q9929t has quit [Remote host closed the connection]
q9929t has joined #lisp
gioyik has quit [Ping timeout: 244 seconds]
gioyik has joined #lisp
<moldybits> DrDuck: they have been spotted. perhaps try #vim, also.
akoana has left #lisp [#lisp]
cosimone_ has quit [Quit: Leaving]
<DrDuck> i just wish i could get over the extreme slowness of the emacs completion for common lisp
gioyik has quit [Quit: WeeChat 2.5]
saravia has joined #lisp
parab has quit [Quit: parab]
alexanderbarbosa has joined #lisp
<drmeister> I have a question about LOOP - how do I bail out of a loop if one of the FOR clauses gets a value that indicates there is no more data?
<drmeister> Say I have for foo = <something> for bar = <something-using-foo> and so on.
<drmeister> If foo is a value that <something-using-foo> will signal an error on - how do I bail out of the loop early?
<drmeister> I can't mix DO clauses with FOR clauses.
<drmeister> I'd like to do something like:
<drmeister> But that's not allowed.
<drmeister> So I end up doing things like this...
<ck_> for foo = <...> while foo ?
<drmeister> I'm allowed to do that?
<ck_> that's a standard idiom for reading a file line-by-line, isn't it
<ck_> am I misunderstanding you?
<drmeister> clhs 6.1.1.6
torbo has joined #lisp
<drmeister> I've interpreted this line to mean I can't do that: -- perform termination tests, generally just before the execution of the loop body.
<drmeister> But reading a file line-by-line - that is one place where this problem comes up.
<ck_> I've written that code many times, but here's my appeal to authority: https://stackoverflow.com/questions/1310783/how-to-read-input-until-eof-in-lisp#1311035
<drmeister> That is fine, it has one FOR then UNTIL then DO
<drmeister> My problem is with FOR UNTIL FOR FOR DO or any FOR UNTIL FOR DO
<pjb> drmeister: both are invalid syntax.
<pjb> drmeister: you cannot mix FOR and other termination clauses.
makomo_ has quit [Ping timeout: 248 seconds]
<ck_> sbcl doesn't complain
<drmeister> Hmm, I'll use WHILE... I can do (LOOP FOR foo = <something> WHILE foo DO (let ((bar <something-using-foo>) (baz <something-using-baz>) (something-using foo bar baz)))
<pjb> Yes, implementation are often more lax on loop syntax, but they also differ. In anycase it's not conforming.
<pjb> drmeister: while or until doesn't matter.
<drmeister> I've heard that sbcl's LOOP is more tolerant.
<ck_> Oh, I wasn't aware of that distinction
<drmeister> ck: No problem - I appreciate the discussion.
<pjb> drmeister: this mean that you may have to use some test on the FOR expressions: (loop for e in '(1 2 nil 4 5 nil) for d = (and e (* e 2)) while e collect d) #| --> (2 4) |#
<pjb> instead of the non-confomring (loop for e in '(1 2 nil 4 5 nil) while e for d = (* e 2) collect d)
<pjb> drmeister: an alternative is to use LET in the loop body…
<drmeister> pjb: Ok - I've been putting tests in - but it always felt kludgy.
<pjb> (loop for e in '(1 2 nil 4 5 nil) while e do (let ((d (* e 2))) (print d))) but of course you cannot use loop clauses such as COLLET inside the LET.
<pjb> so it doesn't always work.
liberiga has quit [Ping timeout: 260 seconds]
<drmeister> And using LET in the loop body seems like I'm not using LOOP fully. Like what is the point of LOOP at all then if I'm binding a bunch of stuff in a LET* anyway?
<drmeister> Right - this the dilemma I've been having - if I do what you suggest in your last post - then I can't use COLLECT and I have to write completely different code.
<pjb> drmeister: loop as a specific and limited syntax. You can also use the simple LOOP operator.
<drmeister> These are two cases that are valid LOOP syntax - right?
<ck_> I think the second one is missing a DO
<pjb> Yes, after while foo.
<drmeister> Grrrn - right
<drmeister> Here are three cases:
<drmeister> Fixed the missing DO in case 2
<drmeister> I'd like to use case 3 - but it's non conforming.
<pjb> Yes.
<pjb> Use for bar = (and foo <something-using-foo>)
<drmeister> I ask because I end up writing gawdawful code like this:
<pjb> and move the while after for.
<pjb> drmeister: well, since you want to report errors, it's nice to use the let in the for expression.
<pjb> Now, instead of do (if, do (unless, do (when, you can use IF, UNLESS and WHEN loop clauses.
<drmeister> pjb: Yes - this is a case where it's more justified.
<drmeister> I still get tripped up with IF, UNLESS and WHEN loop clauses. I need more practice with them.
<pjb> + do after else.
<pjb> drmeister: did you ever store NIL to (gethash index analysis) ?
<pjb> drmeister: otherwise you can use the third argument: (incf (gethash index analysis 0))
<pjb> it provides a default value when the key is not found.
<pjb> Also, unless index do (return-from inlined-at nil) can be written: while index
<pjb> since there are no accumulation clause, the loop result will be nil by default.
<pjb> In fact, I would write: (let ((idx (gethash index (module-inlined-at module)))) (unless idx (return-from inlined-at nil)) idx) as: (or (gethash index (module-inlined-at module)) (loop-finish)) and avoid the named inlined-at which becomes then useless (you can keep loop names for the documentation aspect of it if you want).
<pjb> but let's check if loop-finish is allowed in for expressions, I have a doubt here.
<pjb> Well, I don't see anything that forbid it from being used there.