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/>
OwlWizard has quit [Quit: OwlWizard]
NicknameJohn has quit [Ping timeout: 260 seconds]
istewart has joined #commonlisp
mesuutt has quit [Ping timeout: 256 seconds]
ymir has quit [Ping timeout: 256 seconds]
random-nick has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
mesuutt has joined #commonlisp
amb007 has quit [Ping timeout: 268 seconds]
mesuutt has quit [Ping timeout: 256 seconds]
tok has quit [Ping timeout: 255 seconds]
josrr has quit [Remote host closed the connection]
ymir has joined #commonlisp
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
pfdietz has quit [Quit: Client closed]
pfdietz has joined #commonlisp
decweb has quit [Ping timeout: 255 seconds]
Alfr has joined #commonlisp
mesuutt has joined #commonlisp
triffid has joined #commonlisp
mesuutt has quit [Ping timeout: 252 seconds]
Noisytoot has quit [Quit: ZNC 1.8.2 - https://znc.in]
Noisytoot has joined #commonlisp
amb007 has joined #commonlisp
X-Scale has joined #commonlisp
ymir has quit [Ping timeout: 260 seconds]
amb007 has quit [Ping timeout: 255 seconds]
lucasta has quit [Quit: Leaving]
vyrsh has joined #commonlisp
PuercoPop has joined #commonlisp
vyrsh has quit [Client Quit]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 272 seconds]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 255 seconds]
rainthree has joined #commonlisp
ymir has joined #commonlisp
bitspook has joined #commonlisp
ocra8 has quit [Quit: WeeChat 4.2.2]
semarie has quit [Quit: WeeChat 4.2.2]
mesuutt has joined #commonlisp
ymir has quit [Ping timeout: 240 seconds]
mesuutt has quit [Ping timeout: 260 seconds]
crumbles has joined #commonlisp
Core8966 has joined #commonlisp
<Core8966> hello, I'm here with some doubts about common lisp as restful service, reading the repo cl-awesome I discovered Hunchentoot and Woo from the same author, these are the recommended frameworks to use? also I saw caveman2 but I'm not so sure which one to pick, it is for personal projects and I already use java but I want to learn lisp
xantoz has quit [Read error: Connection reset by peer]
ym has joined #commonlisp
alcor has joined #commonlisp
istewart has quit [Quit: Konversation terminated!]
xantoz has joined #commonlisp
semarie has joined #commonlisp
<younder> Restful service is a programming technique not a setup. I recommend you start with hunchentoot. It is the most documented and thus easiest to get started with. Feel free to look at my table-grinder https://github.com/jthing/table-grinder is you want to get a idea of how to use it.
<ixelp> GitHub - jthing/table-grinder: Database CRUD without the cruft
wacki has joined #commonlisp
shka has joined #commonlisp
<Core8966> thx
amb007 has joined #commonlisp
mesuutt has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
mesuutt has quit [Ping timeout: 246 seconds]
mm007emko has quit [Ping timeout: 256 seconds]
mm007emko has joined #commonlisp
attila_lendvai has joined #commonlisp
attila_lendvai_ has joined #commonlisp
attila_lendvai has quit [Ping timeout: 240 seconds]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 255 seconds]
Cymew has joined #commonlisp
dino_tutter has joined #commonlisp
mgl has joined #commonlisp
rgherdt has joined #commonlisp
tfeb has joined #commonlisp
tfb has joined #commonlisp
mm007emko has quit [Ping timeout: 255 seconds]
tfeb has quit [Remote host closed the connection]
tfb has quit [Client Quit]
tfb has joined #commonlisp
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
dinomug has joined #commonlisp
prokhor has joined #commonlisp
prokhor_ has quit [Ping timeout: 256 seconds]
jonatack has quit [Ping timeout: 252 seconds]
dinomug has quit [Remote host closed the connection]
prokhor has quit [Ping timeout: 256 seconds]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
mesuutt has joined #commonlisp
jonatack has joined #commonlisp
sailorCat has quit [Quit: ZNC 1.8.2 - https://znc.in]
sailorCa- has joined #commonlisp
jon_atack has joined #commonlisp
tfb has quit [Quit: died]
jonatack has quit [Ping timeout: 255 seconds]
decweb has joined #commonlisp
dino_tutter has quit [Ping timeout: 268 seconds]
jonatack has joined #commonlisp
jon_atack has quit [Ping timeout: 256 seconds]
prokhor has joined #commonlisp
random-nick has joined #commonlisp
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
mesuutt has quit [Ping timeout: 252 seconds]
wacki has joined #commonlisp
Cymew has quit [Ping timeout: 252 seconds]
jon_atack has joined #commonlisp
jonatack has quit [Ping timeout: 268 seconds]
Lord_of_Life has quit [Ping timeout: 255 seconds]
Lord_of_Life has joined #commonlisp
basicnpc has joined #commonlisp
<basicnpc> Because common lisp user can write codes that ask the compiler to check certain stuff at compile time, in theory, we should be able to define a macro, say, def-type-fun and def-type-var, that enable static type support? This may be something that coalton is doing. However, I see it as a new language implemented over common lisp, whereas this proposal feels like a slight extension.
mariari has quit [Quit: WeeChat 4.2.2]
rainthree has quit [Ping timeout: 268 seconds]
mesuutt has joined #commonlisp
mariari has joined #commonlisp
amb007 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
<bike> well, first off we already have static types through type declarations
<bike> but if you mean a static type system in the sense that the compiler can type check a program and say definitively that it has no type errors, that touches on more of the language than just macros
pve has joined #commonlisp
<basicnpc> I meant the second.
<bike> standard operators are written with dynamic types in mind. basic functions like FUNCALL take diverse "designator" arguments rather than single checkable types
<basicnpc> Mere macros can't do it, even with suitable use of eval-when?
<bike> that's a lot of why coalton is a DSL
<bike> i mean, consider for example (car (read)). how do you type check that? READ can return anything. Whether this is an error or not depends on what is read at runtime.
<basicnpc> Right. With def-type-fun and def-type-var, we will be using new operators and variables.
<basicnpc> All of the old ones, like car and read, remain in the untyped realm.
<bike> that's just coalton again.
<basicnpc> And if one needs to interop with the old op, cares have to be taken (e.g. Haskell's unsafe operation etc)
<Shinmera> Yeah you're just re-inventing coalton
<basicnpc> Interesting. Let me think about any possible difference. Thank you.
<bike> you're talking about normal lisp code having to be in a segregated zone like unsafe. so, this isn't just an extension to normal lisp.
emilknievel has joined #commonlisp
<basicnpc> Another question: fset provides persistent data structure. Theoretically, can one make a new OOP mechanism based on it? So that "objects" are really values?
mesuutt has joined #commonlisp
<bike> what would that entail?
boogsbunny has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
<basicnpc> For example, an object is just a collection of slots and corresponding objects. One should be able to use persistant maps for that.
<basicnpc> When you "update" a value of a slot, you create an entirely new object instead, like how you update a persistant map (hash-table like structure).
<bike> sure. i don't think you'd even particularly need fset for that.
boogsbunny has quit [Ping timeout: 268 seconds]
basicnpc has quit [Ping timeout: 264 seconds]
josrr has joined #commonlisp
Cymew has joined #commonlisp
micro has quit [Ping timeout: 252 seconds]
jeffrey has joined #commonlisp
jeffrey has quit [Remote host closed the connection]
jeffrey has joined #commonlisp
edgar-rfx has joined #commonlisp
jon_atack has quit [Ping timeout: 246 seconds]
Devon has joined #commonlisp
jonatack has joined #commonlisp
danza_ has joined #commonlisp
mesuutt has joined #commonlisp
edgar-rft has quit [Ping timeout: 268 seconds]
mesuutt has quit [Ping timeout: 252 seconds]
yitzi has joined #commonlisp
robin has quit [Remote host closed the connection]
yitzi has quit [Remote host closed the connection]
yitzi has joined #commonlisp
rgherdt has quit [Ping timeout: 268 seconds]
Devon has quit [Remote host closed the connection]
jonatack has quit [Ping timeout: 252 seconds]
rgherdt has joined #commonlisp
awlygj has joined #commonlisp
mesuutt has joined #commonlisp
rgherdt has quit [Ping timeout: 255 seconds]
mesuutt has quit [Ping timeout: 268 seconds]
edgar-rfx is now known as edgar-rft
fe[nl]ix has quit [Quit: No Ping reply in 180 seconds.]
fe[nl]ix has joined #commonlisp
mesuutt has joined #commonlisp
theBlackDragon has quit [Ping timeout: 255 seconds]
mesuutt has quit [Ping timeout: 268 seconds]
ocra8 has joined #commonlisp
basicnpc has joined #commonlisp
basicnpc has quit [Changing host]
basicnpc has joined #commonlisp
<basicnpc> Oh? Is there any other library for persistent data structure?
<_death> an important part of Objects is that they have an identity...
boogsbunny has joined #commonlisp
<bike> fset provides implementations of containers like maps and sets. you don't need those for objects. i mean you can use a map as an object but why bother when we already have objects
<basicnpc> Why so? I find most of the time I'm treating them as a record of data. And, defclass and friends are handy because relevant functions are defined automatically.
<bike> if you want an "update" that copies you can just do that with regular objects
<basicnpc> bike Because objects are not immutable. It may cause troubles if we're working in a a concurrent setting.
<bike> they're immutable if you don't mutate them. just don't define slot writers and there you go.
rainthree has joined #commonlisp
<bike> and define update-by-copy functions instead, if you like
<basicnpc> But often times we want to change the value of a certain slot for an object.
<basicnpc> In traditional OOP, we mutate that slot. In immutable ways, we create a new object with that slot's value changed.
<bike> sure, so just define functions to do that for you.
<bike> fset isn't doing anything magical. it just defines a WITH function and so on that make a new container based on an old container. you don't need fset to define that stuff for standard objects.
<remexre> is there a good microbenchmarking library someone would wanna recommend? (I've got a recursive algorithm that can terminate in an iterative one at the leaves, I'd like to write a "script" that tries to find the optimal size to fall back to the iterative one at)
<bike> (defclass foo () ((%bar :initarg :bar :reader bar) (%baz :initarg :baz :reader baz))) (defun %copy-foo (foo &key (bar (bar foo)) (baz (baz foo))) (make-instance 'foo :bar bar :baz baz)) (defun wbar (foo bar) (%copy-foo foo :bar bar))
<basicnpc> Hmm.. I haven't looked at its source code but it's using trees under the hood to create new objects. From what I understand, it is necessary, unless I'm willing to accept deep copying objects everytime, which is inefficient.
<bike> there's no need to deep copy if the internals are also immutable
<bike> it uses trees because that's how you represent sets efficiently. but you're talking about objects, not sets. you're not adding and removing slots willy nilly.
<basicnpc> Interesting. I need to think about it.
X-Scale has quit [Ping timeout: 250 seconds]
<_death> there are times when you do want more dynamicity in slots, and then you can have something like (defclass dynamic-object () ((slots :initarg :slots :accessor dynamic-object-slots)) (:default-initargs :slots (fset:empty-map)))
boogsbunny has quit [Ping timeout: 246 seconds]
ebrasca has joined #commonlisp
mgl has quit [Ping timeout: 268 seconds]
X-Scale has joined #commonlisp
mesuutt has joined #commonlisp
green_ has joined #commonlisp
mesuutt has quit [Ping timeout: 240 seconds]
jrm has quit [Quit: ciao]
<basicnpc> Do most common lisp implementations support GC that plays well with immutable data structures like this? Or more generally, are there GC techniques that work particularly well for immutable data structures?
jrm has joined #commonlisp
bjorkintosh has joined #commonlisp
bjorkintosh has joined #commonlisp
<beach> My guess is that for immutable data structures (which generate more garbage when you "modify" them) you would want a collector that does not touch garbage at all. Copying collectors work like that. I don't know what current Common Lisp implementations use, though.
rainthree has quit [Read error: Connection reset by peer]
rainthree has joined #commonlisp
mgl has joined #commonlisp
basicnpc has quit [Ping timeout: 268 seconds]
doyougnu has quit [Ping timeout: 272 seconds]
theBlackDragon has joined #commonlisp
mgl has quit [Ping timeout: 260 seconds]
<pfdietz> Copying collectors also enable related data to be moved close to one another, to improve cache behavior.
boogsbunny has joined #commonlisp
luca_ has joined #commonlisp
luca_ is now known as OwlWizard
Core8966_ has joined #commonlisp
Core8966 has quit [Read error: Connection reset by peer]
Core8966 has joined #commonlisp
OwlWizard has quit [Quit: OwlWizard]
doyougnu has joined #commonlisp
Core8966_ has quit [Ping timeout: 272 seconds]
brokkoli_origina has quit [Remote host closed the connection]
mesuutt has joined #commonlisp
brokkoli_origina has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
<dbotton> paulapatience - in the end there is a linux package wslu that once install give xdg-open on wsl the expected behaviors as a regular linux machine
<paulapatience> dbotton: Thanks
rainthree3 has joined #commonlisp
rainthree has quit [Read error: Connection reset by peer]
jonatack has joined #commonlisp
random-jellyfish has joined #commonlisp
danza_ has quit [Ping timeout: 240 seconds]
awlygj has quit [Quit: leaving]
Core8966_ has joined #commonlisp
ymir has joined #commonlisp
Core8966 has quit [Ping timeout: 255 seconds]
Core8966_ has quit [Ping timeout: 256 seconds]
alcor has quit [Remote host closed the connection]
mesuutt has joined #commonlisp
ymir has quit [Ping timeout: 268 seconds]
alcor has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
Inline has quit [Ping timeout: 240 seconds]
Inline has joined #commonlisp
robin has joined #commonlisp
Core8966 has joined #commonlisp
Core8966 has quit [Read error: Connection reset by peer]
pranav has quit [Remote host closed the connection]
Core8966 has joined #commonlisp
prokhor has quit [Remote host closed the connection]
ymir has joined #commonlisp
rainthree3 has quit [Read error: Connection reset by peer]
rainthree has joined #commonlisp
cage has joined #commonlisp
pranav has joined #commonlisp
mgl has joined #commonlisp
emilknievel has left #commonlisp [#commonlisp]
Core8966_ has joined #commonlisp
Core8966 has quit [Read error: Connection reset by peer]
ymir has quit [Ping timeout: 268 seconds]
mesuutt has joined #commonlisp
basicnpc has joined #commonlisp
basicnpc has quit [Changing host]
basicnpc has joined #commonlisp
mesuutt has quit [Ping timeout: 256 seconds]
wacki has quit [Ping timeout: 260 seconds]
<basicnpc> touch.. the garbage?
<basicnpc> Nvm, I will look that up. Thanks.
wacki has joined #commonlisp
<beach> Some garbage collectors add garbage objects to a pool of free objects. Others just copy live objects and everything not copied is garbage.
rainthree has quit [Read error: Connection reset by peer]
pranav has quit [Remote host closed the connection]
prokhor has joined #commonlisp
pranav has joined #commonlisp
Core8966 has joined #commonlisp
basicnpc has quit [Ping timeout: 256 seconds]
boogsbunny has quit [Remote host closed the connection]
Core8966_ has quit [Ping timeout: 268 seconds]
pranav has quit [Read error: Connection reset by peer]
pranav has joined #commonlisp
ebrasca has left #commonlisp [ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3)]
ymir has joined #commonlisp
Alfr has quit [Remote host closed the connection]
mesuutt has joined #commonlisp
robin has quit [Ping timeout: 240 seconds]
mesuutt has quit [Ping timeout: 256 seconds]
mesuutt has joined #commonlisp
mgl has quit [Ping timeout: 272 seconds]
mesuutt has quit [Ping timeout: 264 seconds]
mesuutt has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 29.3]
pranav has quit [Remote host closed the connection]
waleee has joined #commonlisp
<alcor> Having a silly issue with the FORMAT function: How do you get it to print a literal @ symbol?
<josrr> ,(format t "@")
<ixelp> (format t "@") @ => NIL
varjag has joined #commonlisp
<alcor> I want to prepend @ to a string. But obviously (format nil "@~A" s) does not work because @ here gets interpreted as a modifier :/
<bike> if the @ is before the tilde, it shouldn't be interpreted as a modifier.
<alcor> Oops, sorry, disregard that question. I just made a dumb mistake.
jmiven has quit [Quit: reboot]
<alcor> I typed in (format nil "@–A" s) by mistake (note the –) and spend 10 minutes wondering why that doesn't work :|
rtypo has joined #commonlisp
jmiven has joined #commonlisp
<yitzi> alcor: if you are just prepending then why not `(concatenate 'string "@" s)`?
<alcor> That's an option, but concatenate forms look kinda gnarly to me.
<alcor> But that's like, my opinion. Having to explicitly specify the result type feels redundant.
<yitzi> Try doing a macroexpand on FORMATTER
bitspook has quit [Ping timeout: 250 seconds]
<alcor> I'm going to sleep soon and don't want to have any nightmares, so maybe later.
<yitzi> You'll see that your format call is most likely equivalent to `(with-output-to-string (str) (write-char #\@ str) (princ s str))`
<yitzi> And that is being very optimistic.
<alcor> But that's … not so bad? I imagined something worse.
<alcor> I guess the concatenate form performs better but I'm not doing any microoptimizations yet.
emilknievel has joined #commonlisp
Core8966_ has joined #commonlisp
mgl has joined #commonlisp
mesuutt has quit [Ping timeout: 260 seconds]
Core8966 has quit [Ping timeout: 246 seconds]
emilknievel has left #commonlisp [#commonlisp]
bitspook has joined #commonlisp
mesuutt has joined #commonlisp
yitzi has quit [Remote host closed the connection]
bitspook has quit [Ping timeout: 250 seconds]
Core8966 has joined #commonlisp
Core5745 has joined #commonlisp
Cymew has quit [Ping timeout: 260 seconds]
Core8966_ has quit [Ping timeout: 252 seconds]
Core8966 has quit [Ping timeout: 252 seconds]
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
bitspook has joined #commonlisp
bitspook has quit [Ping timeout: 250 seconds]
pranav has joined #commonlisp
Core8966_ has joined #commonlisp
Core8966 has joined #commonlisp
Core5745 has quit [Ping timeout: 256 seconds]
Core3005 has joined #commonlisp
Core8966_ has quit [Ping timeout: 260 seconds]
<Shinmera> I pretty much never use concatenate just because it's so horrible to read compared to format
bitspook has joined #commonlisp
Core8966 has quit [Ping timeout: 260 seconds]
<Shinmera> and in fact in my primitive benchmark both ways perform the same
<Shinmera> presumably because sbcl can optimise the w-o-t-s to about the same thing
<Shinmera> so
<Shinmera> just format
bitspook has quit [Remote host closed the connection]
Core8966 has joined #commonlisp
Core8966_ has joined #commonlisp
Core8966 has quit [Read error: Connection reset by peer]
Core3005 has quit [Ping timeout: 260 seconds]
bitspook has joined #commonlisp
rgherdt has joined #commonlisp
bitspook has quit [Ping timeout: 250 seconds]
mesuutt has quit [Ping timeout: 268 seconds]
ocra8 has quit [Quit: WeeChat 4.2.2]
amb007 has quit [Ping timeout: 256 seconds]
prokhor has quit [Remote host closed the connection]
mesuutt has joined #commonlisp
Core8966_ has quit [Ping timeout: 256 seconds]
lucasta has joined #commonlisp
jonatack has quit [Ping timeout: 246 seconds]
alcor has quit [Ping timeout: 268 seconds]
X-Scale15 has joined #commonlisp
shka has quit [Ping timeout: 260 seconds]
X-Scale has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
rgherdt has quit [Quit: Leaving]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 264 seconds]
Josh_2 has quit [Remote host closed the connection]
istewart has joined #commonlisp
amb007 has quit [Ping timeout: 246 seconds]
rtypo has quit [Ping timeout: 260 seconds]
amb007 has joined #commonlisp
flip214 has quit [Read error: Connection reset by peer]
enzuru has quit [Quit: ZNC 1.8.2 - https://znc.in]
enzuru has joined #commonlisp
flip214 has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
mgl has quit [Ping timeout: 255 seconds]
attila_lendvai_ has quit [Remote host closed the connection]
attila_lendvai_ has joined #commonlisp
varjag has quit [Ping timeout: 260 seconds]
NicknameJohn has joined #commonlisp
X-Scale15 has quit [Quit: Client closed]
mesuutt has joined #commonlisp
younder has quit [Ping timeout: 256 seconds]
mesuutt has quit [Ping timeout: 268 seconds]
pve has quit [Quit: leaving]