jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | offtopic --> #lispcafe
ajithmk has joined #lisp
ebrasca has quit [Remote host closed the connection]
cosimone has quit [Quit: Quit.]
cosimone has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
kaftejiman has quit [Remote host closed the connection]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
jesse1010 has joined #lisp
bhartrihari has joined #lisp
markoong has quit [Ping timeout: 265 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
<mrcom> Josh_2: Still here?
cosimone has quit [Quit: Quit.]
<mrcom> minion: message for Josh_2: EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
<minion> i don't agree - message for josh_2 effective slot definition isn't a virtual class and should not be directly instantiated see httpsstackoverflow comquestions21986977additional properties to slot definition
kbtr_ has quit [Ping timeout: 272 seconds]
kbtr has joined #lisp
<mrcom> minion: message for Josh_2 EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
<minion> i don't agree - message for josh_2 effective slot definition isn't a virtual class and should not be directly instantiated see httpsstackoverflow comquestions21986977additional properties to slot definition
<mrcom> minion: memo for Josh_2: EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
<minion> Remembered. I'll tell Josh_2 when he/she/it next speaks.
<mrcom> minion: memo for Josh_2: Other notes: looks like you're trying to set up a circular dependency with VALIDATE-SUPERCLASS. "`',slot-names-lock-alist" isn't... what you want. The INITFUNCTION is the proper way to do it, completely overriding :INITFORM and :INITARG.
<minion> Remembered. I'll tell Josh_2 when he/she/it next speaks.
bhartrihari has joined #lisp
<mrcom> minion: memo for Josh_2: And I suspect your end goal is automatically thread-safe slots. This is a common thought, but kind of a dead-end. The primary issue with thread-safety isn't reading or updating a single slot. It's the higher-level cross-slot operations (e.g. changing STREET-ADDRESS and CITY), cross-object (updating object's address and the ADDRESS-HASH-TABLE that points to it), and global (making sure there's only one obje
<mrcom> ct with user ID FOO-BAX).
<minion> Remembered. I'll tell Josh_2 when he/she/it next speaks.
<mrcom> minion: memo for Josh_2: You'll probably find you need a single mutex per object, and one or more global mutexes. Most importantly, you'll need to define atomic functions/generic functions, and these will be completely aware of the mutexes.
<minion> Remembered. I'll tell Josh_2 when he/she/it next speaks.
<minion> Remembered. I'll tell Josh_2 when he/she/it next speaks.
<mrcom> minion: memo for Josh_2: In other words, you aren't going to need a broad superclass which invisibly adds lock slots.
EvW1 has quit [Ping timeout: 260 seconds]
cosimone has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jesse1010 has quit [Ping timeout: 260 seconds]
satousan has joined #lisp
satousan has quit [Client Quit]
notzmv has joined #lisp
dominic35 has joined #lisp
dominic34 has quit [Ping timeout: 246 seconds]
dominic35 is now known as dominic34
paul0 has quit [Quit: Leaving]
lucasb has quit [Quit: Connection closed for inactivity]
davsebamse has quit [Ping timeout: 264 seconds]
davsebamse has joined #lisp
Oladon has joined #lisp
ajithmk has quit [Quit: Connection closed for inactivity]
dominic34 has quit [Ping timeout: 256 seconds]
Alfr_ has joined #lisp
dominic34 has joined #lisp
Alfr has quit [Ping timeout: 260 seconds]
akoana has left #lisp ["Leaving"]
orivej has joined #lisp
dominic34 has quit [Ping timeout: 260 seconds]
mikecheck has left #lisp ["part"]
<beach> Good morning everyone!
alandipert has quit [Quit: The Lounge - https://thelounge.chat]
Bike has quit [Quit: leaving]
alandipert has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
alandipert has quit [Quit: The Lounge - https://thelounge.chat]
alandipert has joined #lisp
alandipert has quit [Client Quit]
alandipert has joined #lisp
orivej has joined #lisp
torbo has quit [Remote host closed the connection]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
Lord_of_Life_ is now known as Lord_of_Life
flak has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
shidima has joined #lisp
orivej has quit [Remote host closed the connection]
orivej has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
orivej has quit [Remote host closed the connection]
narimiran has joined #lisp
orivej has joined #lisp
mindCrime has quit [Ping timeout: 260 seconds]
xrash has quit [Ping timeout: 256 seconds]
Fare has quit [Ping timeout: 260 seconds]
nicktick has joined #lisp
Fare has joined #lisp
satousan has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
orivej_ has joined #lisp
satousan has quit [Quit: WeeChat 2.3]
whiteline has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 240 seconds]
Oladon has quit [Quit: Leaving.]
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
bocaneri has joined #lisp
shka_ has joined #lisp
gravicappa has joined #lisp
xrash has joined #lisp
treflip has joined #lisp
Oladon has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
Fare has quit [Ping timeout: 244 seconds]
ofi has joined #lisp
bsd4me has quit [Quit: Leaving]
Bourne has quit [Ping timeout: 264 seconds]
varun_ has joined #lisp
nirved has joined #lisp
<varun_> hi
<beach> Hello varun_.
<varun_> another lisp channel?
<beach> This is the Common Lisp channel. There is ##lisp for other "Lisps".
Bourne has joined #lisp
nirved has quit [Client Quit]
<varun_> there is one #lispgames too
<beach> Indeed.
<varun_> whats that for
<varun_> and whats this for
<varun_> and yes
<varun_> whats the others for?
<beach> This one is for discussions about the language, implementations of the language, and implementations of applications written in Common Lisp.
<beach> #clschool is for newbies who want to learn Common Lisp.
<beach> #lispgames I suppose is for game developers. I don't hang out there.
<varun_> y
<varun_>
jonatack has quit [Ping timeout: 240 seconds]
nirved has joined #lisp
mankaev has quit [Ping timeout: 240 seconds]
mankaev has joined #lisp
froggey has quit [Ping timeout: 240 seconds]
froggey has joined #lisp
tourjin has joined #lisp
<tourjin> quicklisp install fails on (quicksisp-quickstart:install) with error of Condition of type: idxu INVALID-ARGUMENT-ERROR Socket error in "socket": EINVAL (Invalid argument)
<tourjin> any suggestions?
<varun_> contrapunctus: hi
<contrapunctus> varun_: o/
<tourjin> android termux , compiled ecl , loaded quicklisp.lisp in ecl.
<jdz> tourjin: I think ECL comes with (probably modified) Quicklisp.
<tourjin> then i don't need to install quicklisp?
<jdz> tourjin: Instead of downloading Quicklisp, just do (require 'ecl-quicklisp).
Oladon has quit [Quit: Leaving.]
<jdz> Not sure where this is described, though.
<phoe> hello everyone
<contrapunctus> hello phoe
Bourne has quit [Ping timeout: 240 seconds]
varun_ has quit [Quit: Leaving]
<tourjin> in ecl (require 'ecl-quicklisp) returns loading #p"/data/blhablha/ecl-20.4.24/ecl-quicklisp.fas, ecl-curl.fas, sockets.fas"
<tourjin> unable to load / install quicklisp. error message follows:
<tourjin> socket error in "socket": EINVAL (Invalid argument)
<tourjin> still there is something wrong with socket.
gaqwas has joined #lisp
<jdz> tourjin: This might be a good time to ask in #ecl.
vaporatorius__ has joined #lisp
<tourjin> ok thanks
<tourjin> join #ec
vaporatorius has quit [Ping timeout: 265 seconds]
<shidima> j/quit
shidima has quit [Quit: WeeChat 2.8]
grumble has quit [Quit: Thanks for coming to or show and being an amazing audience. We have been Look Ma We Made A Band.]
lpyfist has joined #lisp
Lycurgus has joined #lisp
grumble has joined #lisp
terpri has quit [Ping timeout: 244 seconds]
Lycurgus has quit [Remote host closed the connection]
gaqwas has quit [Remote host closed the connection]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
mokulus has joined #lisp
pve has joined #lisp
bjorkintosh has quit [Read error: Connection reset by peer]
terpri has joined #lisp
whiteline has joined #lisp
bjorkintosh has joined #lisp
nicktick has quit [Ping timeout: 260 seconds]
jasom has quit [Ping timeout: 272 seconds]
housel has quit [Ping timeout: 265 seconds]
housel has joined #lisp
nicktick has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
gaqwas has joined #lisp
treflip has joined #lisp
tessier has quit [Ping timeout: 256 seconds]
gaqwas has quit [Remote host closed the connection]
ghard has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
tessier has joined #lisp
tessier has joined #lisp
treflip has joined #lisp
fouric has quit [Quit: WeeChat 2.8]
ljavorsk has joined #lisp
nicktick has quit [Ping timeout: 260 seconds]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
jonatack has joined #lisp
hendursa1 has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 260 seconds]
Bourne has joined #lisp
jasom has joined #lisp
ljavorsk_ has joined #lisp
ljavorsk has quit [Ping timeout: 264 seconds]
xrash has quit [Ping timeout: 246 seconds]
deselby has quit [Quit: Idle for 30+ days]
fountainpen[m] has left #lisp ["Kicked by @appservice-irc:matrix.org : Idle for 30+ days"]
ebrasca has joined #lisp
lpyfist has quit [Ping timeout: 240 seconds]
ayuce has joined #lisp
dra has joined #lisp
orivej has joined #lisp
dddddd has quit [Ping timeout: 256 seconds]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
markoong has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
dddddd has joined #lisp
contrapunctus has joined #lisp
markong has joined #lisp
markoong has quit [Ping timeout: 240 seconds]
vaporatorius has joined #lisp
ggole has joined #lisp
vaporatorius__ has quit [Ping timeout: 256 seconds]
Aurora_v_kosmose has quit [Ping timeout: 240 seconds]
Duuqnd has joined #lisp
tourjin has quit [Ping timeout: 240 seconds]
tourjin has joined #lisp
Aurora_v_kosmose has joined #lisp
lottaquestions has joined #lisp
Bourne has quit [Ping timeout: 240 seconds]
galex-713 has quit [Ping timeout: 244 seconds]
v88m has quit [Ping timeout: 256 seconds]
<sm2n> good morning
galex-713 has joined #lisp
<Josh_2> morning all
<minion> Josh_2, memo from mrcom: You'll probably find you need a single mutex per object, and one or more global mutexes. Most importantly, you'll need to define atomic functions/generic functions, and these will be completely aware of the mutexes.
<minion> Josh_2, memo from mrcom: EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
<minion> Josh_2, memo from mrcom: And I suspect your end goal is automatically thread-safe slots. This is a common thought, but kind of a dead-end. The primary issue with thread-safety isn't reading or updating a single slot. It's the higher-level cross-slot operations (e.g. changing STREET-ADDRESS and CITY), cross-object (updating object's address and the ADDRESS-HASH-TABLE that points to it), and global (making sure there's only one obje
<minion> Josh_2, memo from mrcom: Other notes: looks like you're trying to set up a circular dependency with VALIDATE-SUPERCLASS. "`',slot-names-lock-alist" isn't... what you want. The INITFUNCTION is the proper way to do it, completely overriding :INITFORM and :INITARG.
<minion> Josh_2, memo from mrcom: In other words, you aren't going to need a broad superclass which invisibly adds lock slots.
<Josh_2> oof
<sm2n> heh
<Josh_2> mrcom: I can get slot-value to grab a mutex using an :around on slot-value-using-class. I guess this could just be one aspect of a library I could create to aid with making parallel systems, because handling locks is such a pita
<Josh_2> it seems like something the MOP is perfect for
<Josh_2> I'm also not trying to add additional properties to my slot definition, i simply want to append an extra slot
xrash has joined #lisp
xrash has quit [Excess Flood]
xrash has joined #lisp
luqqy has joined #lisp
<luqqy> good day all!
<luqqy> anyone know if there's smth like with-slots for structures?
<phoe> there's two options
<phoe> 1) you can use with-accessors or wrap a macro on top of that to emulate the behavior
<phoe> 2) you can use with-slots based on the fact that, even though it's undefined by the standard, the last time I checked *ALL* implementations defined SLOT-VALUE on structures in a meaningful way, the same that you could expect from standard objects.
<luqqy> oh, this is great
<phoe> and suggesting option 2) is going to get me a real good scolding from beach in a few moments
<phoe> that's one of the things that *really* needs a CDR of sorts.
<luqqy> thanks man, both look pretty good
random-nick has joined #lisp
Bourne has joined #lisp
<jackdaniel> I think that it is a pretty bold omission to not even mention the structure-class metaclass in mop
gxt has joined #lisp
<phoe> jackdaniel: oh! I didn't think of it
<phoe> ...how does STRUCTURE-CLASS help with WITH-SLOTS though?
terpri_ has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
garbochock has quit [Remote host closed the connection]
terpri has quit [Ping timeout: 260 seconds]
luqqy has quit [Remote host closed the connection]
luqqy has joined #lisp
Necktwi has quit [Quit: leaving]
shifty has joined #lisp
Necktwi has joined #lisp
yaji has joined #lisp
Bourne has quit [Ping timeout: 256 seconds]
<jackdaniel> with-slots-using-class
<jackdaniel> is a suggested way of implementing with-slots
<jackdaniel> s/with-slots/slot-value/
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
<Josh_2> hnnng
<Josh_2> only suggested? so It's not guaranteed to work in all implementations?
<Josh_2> it works in sbcl
<jackdaniel> slot-value-using-class is not part of the common lisp standard
<jackdaniel> (however it is part of mop)
<Josh_2> hmm
kaftejiman has joined #lisp
luqqy has quit [Remote host closed the connection]
<Josh_2> I added a method for my metaclass and it worked just as expected, when I call slot-value slot-value-using-class was called (in sbcl)
<Josh_2> can I rely on that behaviour in major implementations like CCL?
<Josh_2> Any distribution that uses the MOP I assume
<jackdaniel> "Although no implementation is required to do so, implementors are strongly encouraged to implement the function slot-value using the function slot-value-using-class described in the Metaobject Protocol. "
<jackdaniel> I'd say yes, unless the documentation of your implementation states otherwise
<Josh_2> okay thanks
<Josh_2> where did you find that?
<jackdaniel> under "Notes" section in slot-value specification
luqqy has joined #lisp
<Josh_2> in clhs?
<jackdaniel> also, slot-value may be globally proclaimed inline
<jackdaniel> yes, in common lisp standard
tourjin has quit [Ping timeout: 256 seconds]
<Josh_2> okay
tourjin has joined #lisp
<Josh_2> the MOP is quite annoying
<Josh_2> well, my failure to understand
yaji has quit [Remote host closed the connection]
yaji has joined #lisp
yaji has quit [Remote host closed the connection]
yaji has joined #lisp
nicktick has joined #lisp
liberliver has quit [Quit: liberliver]
ljavorsk_ has quit [Ping timeout: 264 seconds]
stoneglass has joined #lisp
gko_ has joined #lisp
Fare has joined #lisp
sjl_ has joined #lisp
tourjin has left #lisp ["Leaving"]
tourjin has joined #lisp
<tourjin> clang-10: error: linker commnad failed with exit code 1 ( use -v to see invocation)
<tourjin> what does this mean?
<phoe> wait
<phoe> how did you end up posting clang errors on #lisp
<jackdaniel> probably he uses clang as a C backend for ecl
<phoe> is this still ecl errors?
<phoe> oh, yes
<phoe> is this on termux/android?
<mrcom> Josh_2: Yep, you're approaching the problem from bottom-up. You'll learn a lot about MOP in the process. Just warning you that you'll discover locking individual slots doesn't buy you much.
<tourjin> yes I'm trying compile sbcl with ecl on android termux\
<jackdaniel> that means that clang failed to link some objects after compiling them, this error doesn't allow to infere more from that
wsinatra has joined #lisp
<jackdaniel> s/this error/this error message/
<tourjin> phoe then should I try different lisp to compile sbcl from source ?
<phoe> Josh_2: (defun frobnicate (object x y) (setf (slot-value object 'foo) x (slot-value object 'bar) y))
<jackdaniel> ECL acronym standa for - Eeee-that-lisp-to-compile-sbCL-on-android-p
<jackdaniel> stands*
<phoe> even if both slots are synchronized you still can get race conditions from two simultaneous calls to FROBNICATE
<tourjin> document says sbcl can be compiled with ecl. so I tryed all day but only failed with several warnings and clang-10 error
<mrcom> Josh_2: In fact, you're probably already getting atomic updates of slots.
<_death> maybe check out software transactional memory (e.g., the common lisp library stmx)
<_death> I think it's currently broken and needs an update
<mrcom> Josh_2: On 64-bit X86, 64-bit-aligned updates are atomic. Implementations are going to align CONS cells on words.
<mrcom> Josh_2: Setting a slot value boils down to updating the CAR of the slot, which will be an atomic 64-operation. One instant the slot will point to the old value, and then the next to the new.
<mrcom> s/CAR of the slot/CAR or array element/
<flip214> jackdaniel: any plans to get ECL in f-droid?
<jackdaniel> afair the problem with getting cl-repl there were problems of f-droid maintainers to build the thing, but that was 2y ago or so
<flip214> only thing between ecl and world domination... at least by number of devices
<eta> is there a way to do CHECK-TYPE on a function?
<eta> i.e. something similar to the (DECLARE (FTYPE ... )) declaration, but for runtime lambda values
yaji has quit [Remote host closed the connection]
yaji has joined #lisp
<phoe> not really
<phoe> nothing portable at least
ldb has joined #lisp
<ldb> good evening
yaji has quit [Ping timeout: 256 seconds]
<ldb> eta: what is the reason for check function's type?
<eta> ldb, I want to validate that a callback passed into my function takes the right arguments
<jackdaniel> arguments are evaluated from the left, not right! \j
* ldb jackdaniel: no puns
ofi has quit [Quit: ERC (IRC client for Emacs 26.3)]
<jackdaniel> don't pun-ish me
<luqqy> just reflecting here, but one thing that sort of bugs me about common lisp is that functions aren't truly first class citizens
<ldb> eta: you may require the client function to by a structure with the function and an validating object
<ldb> luqqy: wut do u mean?
Bike has joined #lisp
<jackdaniel> luqqy: that's a feature. if you want first-class objects, you may subclass a funcallabe-standard-class and setf it to (fdefinition 'symbol)
<ldb> well so they are just not more equal then other objects (Animal Farm pun)
<phoe> if you want FTYPE declarations that you can try to then take apart to validate arglists against, then you can use trivial-cltl2:function-information
<phoe> and its third return value
<beach> In what way are functions not first-class citizens?
<beach> luqqy: ↑
<luqqy> ldb, beach: lisp 2 for once, the problem eta voiced for two. ok, maybe i am being too brisk about this. there also was a pun in my complaint btw
<eta> phoe, that sounds like what I want!
<phoe> eta: figure out how FUNCTION-INFORMATION behaves when there's multiple FTYPE declarations, then, and write something that validates your arguments against each FTYPE declaration it finds there
<luqqy> ldb, beach: composition, currying
<beach> luqqy: You must have a very different definition of "first-class citizen".
<phoe> luqqy: oh, you mean ALEXANDRIA:COMPOSE, ALEXANDRIA:CURRY, ALEXANDRIA:RCURRY?
ldb has quit [Ping timeout: 244 seconds]
hendursa1 has quit [Quit: hendursa1]
<beach> luqqy: You are pretty new here, it seems. Maybe you need to ask question rather than affirming false statements.
<eta> phoe, I mean, to be honest, it's probably more idiomatic to make the thing into a promise returning some CLOS class instead of doing it the callback-ey way
ldb has joined #lisp
<luqqy> beach: you are right, i was a bit too quick to judge
<phoe> eta: that's a more troublesome question because it requires some context about what you're doing
hendursaga has joined #lisp
<phoe> but if you need to dive into low-level declaration stuff like this, then there's some mechanisms for that
<eta> phoe, I'm writing a whatsapp library -- you make some request, like "upload a file", and get back some information asynchronously about where to put the file
<eta> the issue is "how do I return these 4 pieces of information asynchronously in the most idiomatic way?"
<ldb> actor
<phoe> some sorta promise library like https://github.com/orthecreedence/blackbird mayhaps
<luqqy> beach: sorry, you are right
<eta> phoe, yeah, I'm already using that elsewhere in the codebase, so I'll probably do that :)
<phoe> or write your app in an actors-passing-messages model kind of stuff
<phoe> the erlangesque way of doing stuff is really nice when it comes to modeling asynchronous processes
<ldb> or message automata, whatsoever
<eta> I've been burned by callbacks a few times with this project, so yeah, I am gonna make it all use message-passing
gaqwas has quit [Remote host closed the connection]
* eta has a lot of experience doing that in Rust and it's really nice
<eta> plus then I can define the messages as CLOS classes and use defgeneric/defmethod dispatch :)
<eta> (i.e. (defgeneric process-message (actor message)))
luqqy has quit [Remote host closed the connection]
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
dominic34 has joined #lisp
bitmapper has quit [Remote host closed the connection]
rumbler31_ has joined #lisp
tourjin has quit [Ping timeout: 265 seconds]
bitmapper has joined #lisp
Bourne has joined #lisp
notzmv has quit [Ping timeout: 260 seconds]
ldb has quit [Ping timeout: 260 seconds]
zigpaw has quit [Ping timeout: 264 seconds]
liberliver has joined #lisp
TwoNotes has joined #lisp
lucasb has joined #lisp
tourjin has joined #lisp
zigpaw has joined #lisp
ldb has joined #lisp
wsinatra has quit [Quit: WeeChat 2.9]
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
stoneglass has quit [Quit: stoneglass]
alandipert has quit [Remote host closed the connection]
bsd4me has joined #lisp
housel has quit [Read error: Connection reset by peer]
gxt has quit [Remote host closed the connection]
gxt has joined #lisp
alandipert has joined #lisp
midre has quit [Ping timeout: 256 seconds]
narimiran has quit [Ping timeout: 256 seconds]
ldb has quit [Ping timeout: 240 seconds]
EvW has joined #lisp
zigpaw has quit [Read error: Connection reset by peer]
zigpaw has joined #lisp
midre has joined #lisp
tourjin has quit [Remote host closed the connection]
tourjin has joined #lisp
Inline has joined #lisp
<Josh_2> mrcom: how come with clojure you don't have to worry about locks?
<Josh_2> also I understand that you may consider this a fruitless exercise, however I'm doing it as an attempt to learn to use the MOP
<Josh_2> not going so well though xD
<phoe> Josh_2: 1) every Java object is a lock
<phoe> 2) if you mutate nothing then everything is thread-safe by default
<Josh_2> yes
orivej has joined #lisp
dominic34 has quit [Quit: dominic34]
midre has quit [Ping timeout: 256 seconds]
midre has joined #lisp
ebrasca has quit [Read error: Connection reset by peer]
<Inline> is there something like jupyter for lisp ?
ayuce has quit [Remote host closed the connection]
<xristos> Emacs
<Duuqnd> Emacs + SLIME
rippa has joined #lisp
<treflip> Also, Emacs + Slime + Orgmode. It's a great environment for mixed interactive programming.
orivej has quit [Remote host closed the connection]
<jackdaniel> what about cl-jupyter though?
<jackdaniel> I think it is much better fit for the jupyter question
orivej has joined #lisp
heredoc has quit [Ping timeout: 244 seconds]
yaji has joined #lisp
tourjin has quit [Ping timeout: 240 seconds]
jibanes has quit [Ping timeout: 256 seconds]
CrazyEddy has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
jibanes has joined #lisp
orivej has joined #lisp
yaji has quit [Ping timeout: 256 seconds]
dra has quit [Remote host closed the connection]
dra has joined #lisp
gxt has quit [Quit: WeeChat 2.9]
Archenoth has quit [Read error: Connection reset by peer]
Archenoth has joined #lisp
Lord_of_Life_ has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
ebrasca has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
orivej has quit [Remote host closed the connection]
Lord_of_Life has quit [Ping timeout: 246 seconds]
Lord_of_Life_ is now known as Lord_of_Life
orivej has joined #lisp
dra has quit [Remote host closed the connection]
<mrcom> Josh_2: "Because I want to" is perfectly acceptable. "It will teach me something" is a commendable reason.
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
<mrcom> Josh_2: It will also teach you a lot about parallelism. Take what I said as foreshadowing; it *may* be enlightening in the future.
<jackdaniel> because it is fun is a spoiled hacker reason :)
<Inline> but anyway, when i start it i get a connection, but soon after the connection dies the server vanishes, and the stale connection gets tried to be replace forever....
<mrcom> jackdaniel: Tell that to a farmer :)
orivej has quit [Remote host closed the connection]
orivej has joined #lisp
<Inline> hmmmm
<Inline> ok the install-image succeeds but cl-jupyter:install just fails, because then there's no reference to the quicklisp package obviously
<Inline> lright thank you
ayuce has joined #lisp
elosant has joined #lisp
xrash has quit [Ping timeout: 256 seconds]
elosant has quit [Client Quit]
Lycurgus has joined #lisp
<mrcom> Josh_2: You're doing fine. MOP is pretty recursive mentally.
z3t0 has quit [Quit: ZNC 1.7.5 - https://znc.in]
<mrcom> Josh_2: Points that might help: *1* Don't even think about _changing_ the standard classes. You're extending them into new child meta classes, which will be explicitly instantiated.
ahungry has joined #lisp
EvW has quit [Ping timeout: 256 seconds]
orivej has quit [Ping timeout: 246 seconds]
<mrcom> Josh_2: *2* Think of the MOP as "macros for classes". A good way of developing macros is to first manually write some of the DEFUNs you want to wind up with. Same thing for classes.
mankaev has quit [Ping timeout: 256 seconds]
mankaev has joined #lisp
theseb has joined #lisp
<mrcom> Josh_2: So, manually create some classes with the slot mutexes, and redefine the accessors with DEFMETHODs.
tourjin has joined #lisp
Lycurgus has quit [Remote host closed the connection]
gko_ has quit [Ping timeout: 256 seconds]
Bit_MCP has joined #lisp
<Josh_2> I get that
<Josh_2> thanks for the advice mrcom
<Josh_2> but I'm still stuck haha
Bit_MCP has quit [Client Quit]
<mrcom> Josh_2: OK, have you created a class that does a bit of what you want?
<mrcom> Josh_2: Are you ready to automate the creation of that class?
housel has joined #lisp
<Josh_2> I am stuck at the automating part :P
jgodbout has joined #lisp
<Josh_2> trying to append a new slot onto the slots defined in defclass
<mrcom> Good. Start with adding the extra slots you'll need. Keep your manual redefinitions of the accessors, for now.
<mrcom> Did you look at the stackoverflow link?
<ebrasca> Does some CL implementation compile in parallel?
<Josh_2> mrcom: yes and I've read about that in AMOP
<jackdaniel> specify what do you mean by parallel compilation
z3t0 has joined #lisp
<Josh_2> in "Extending the language"
<mrcom> ebrasca: SBCL. They just had a note in #sbcl.
<jackdaniel> I'm sure that you can do (dotimes (f files) (bt:make-thread (lambda () (compile-file f))))
<jackdaniel> on numerous implementations
<ebrasca> jackdaniel: compiling multiple functions/parts in parallel.
<jackdaniel> but sometimes compiler locks itself so only one thread does things
<mrcom> Josh_2: OK, you're trying to extend standard-effective-slot-definition now, not instantiate effective-slot-definition?
<Josh_2> no
<Josh_2> I'm not trying to extend standard-effective...
<ebrasca> In Mezzano you can enable parallel compilation.
<mrcom> That's the first thing to do. Cut-n-paste the stackoverflow example.
<ebrasca> Don't know how it works.
<Josh_2> one sec you can see what I'm trying to do by seeing my compute-slots
<Josh_2> also in AMOP they use :initform how I have, I don't understand why you told me not to
<ebrasca> jackdaniel: Can you make sbcl to compile in parallel automaticly?
gaqwas has quit [Remote host closed the connection]
<jackdaniel> I don't know how sbcl compiles inside its compile-file function, and calling compile-file is completely up to you
<jackdaniel> Fare had this extension to asdf, poiu I think
<jackdaniel> which forked the process and called compile-file I think
PuercoPop has quit [Remote host closed the connection]
<mrcom> "This class is an abstract class and is not intended to be instantiated. The results are undefined if an attempt is made to make an instance of this class with make-instance."
<Josh_2> but I'm not doing that
kaftejiman has quit [Remote host closed the connection]
<Josh_2> I'm making an instance of direct-slot.. in that code and I have tried effective-slot as well
<Josh_2> just like they do in the book
<Bike> it looks like you're making a direct-slot-definition, not a standard-direct-slot-definition?
<mrcom> Sorry, wrong abstract class. But same thing for direct-slot-definition. https://clos-mop.hexstreamsoft.com/classes/#direct-slot-definition
<Josh_2> oooooh
<Josh_2> okay I changed to standard-effective
<ebrasca> jackdaniel: Thx!
<Bike> you probably want to reverse the order of arguments to cons
<Bike> since normal-slots is a list
heredoc has joined #lisp
<Josh_2> I just swapped that as I was clutching at straws
<Josh_2> originally they were the other way
<Bike> what error did you get when you tried to make a direct slot?
<Josh_2> The same error I am always getting
<Josh_2> 1 sec
<Bike> yeah, that's not very helpful, is it.
<mrcom> Actually, isn't this a different error than yesterday?
<Josh_2> I think it might be, I added some a little extra code
<Josh_2> I will just post all the code again
<mrcom> You might want to restart your SBCL session, too.
<Josh_2> I have a few times
<Josh_2> I will do it again!
<mrcom> Ohh... You shouldn't create LOCKED-OBJECT class before you've finished setting up METACLASS.
<Josh_2> oh
<mrcom> It might be OK, but the main point of a metaclass is automating the creation of subclasses, not automating instances of the subclass.
<Josh_2> I don't know how I'm gonna test if it works
<mrcom> Just move the DEFCLASS LOCKED-OBJECT to the bottom.
<Josh_2> done already
<mrcom> ... and restart SBCL.
<Josh_2> done that
<Josh_2> Still getting the same error
<mrcom> Where's the error showing up?
mankaev has quit [Read error: Connection reset by peer]
<Josh_2> When I instantiate 'locked-object
<Bike> the class itself, or an instance of it?
mankaev has joined #lisp
<mrcom> OK, let's see what the LOCKED-OBJECT class looks like.
<Josh_2> an instance of 'locked-object
<Josh_2> not the class
<Josh_2> one sec I will get the class
<mrcom> Wait a second.. why are you using C2MOP in SBCL?
<Josh_2> to be portable?
<mrcom> (And note the "Class not finalized" in your screen dump.)
<Josh_2> hhnnng
<mrcom> That's OK, but MAKE-INSTANCE is going to use SBCL's internal implementation.
<mrcom> As is DEFCLASS.
<Josh_2> hmm
tourjin has quit [Ping timeout: 260 seconds]
<mrcom> Drop C2MOP and replace with SB-MOP.
<mrcom> (DEFPACKAGE :MY-WHATEVER (:use #+SBCL :SB-MOP))
<Josh_2> I still have the same error when using sb-mop instead
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
dominic34 has joined #lisp
vaporatorius__ has joined #lisp
<mrcom> Let's see the class again.
vaporatorius has quit [Ping timeout: 240 seconds]
<mrcom> And can you paste the current code? The previous paste cut off part-way, BTW.
<Josh_2> that is the current code
<Josh_2> all 50 lines of it
<mrcom> Just saw it :)
<Josh_2> okay :)
<mrcom> What does the inspector show for the class?
dominic34 has quit [Ping timeout: 240 seconds]
<Josh_2> the same as before
dra has joined #lisp
<Josh_2> still not finalized
Jesin has quit [Quit: Leaving]
treflip has quit [Quit: WeeChat 2.6]
<mrcom> Ah. You're trying to put the slot locks in the _metaclass_. They can go directly in the class, or in the _superclass_.
<mrcom> _Metaclasses_ are the macros; they tell how to create the _classes_, not the instances.
<jackdaniel> calling metaclasses macros is quite a stretch
<jackdaniel> metaclasses are classes
<mrcom> Yes, and macros are functions.
<jackdaniel> which implement a specified protocol
<mrcom> The point is, both tell how to create something that creates something.
<Josh_2> mrcom: Hmm I thought I was trying to append the alist (of locks) onto any class whose metaclass is 'metalock'
<jackdaniel> you can describe everything in terms of metaphysical input-output, but I think that this metaphore is not very useful
<mrcom> Josh_2: You are. But the locks don't live in the metaclass.
<phoe> a Lisp macro is a transform from source to source
<mrcom> phoe: Yes, that's more accurate.
<phoe> don't think this applies well to classes and metaclasses
<mrcom> And that's the way you should think of a metaclass. It transforms a class definition.
<Josh_2> yes I understand
<jackdaniel> this way of thinking is plain wrong
dominic34 has joined #lisp
<mrcom> jackdaniel: The point I'm trying to correct is that anything specific to an instance resides in a metaclass. It doesn't. You can put the equivalent of _class variables_ in a metaclass, but that's not where he's at.
<mrcom> To possibly beat a dead horse: Metaclasses are only used when creating a _class_. Once the classes have been created you could, pretty much, delete the metaclasses.
<jackdaniel> custom metaclass may be i.e. used to hold all this class instances in a weak hash table, and that's a very valid use of the metaclass protocol
<jackdaniel> s/metaclass/metaobject/
<mrcom> jackdaniel: Yep, but that's an even more advanced topic. Josh has been trying to wrap his head around plain old instance slots. (Which, BTW, is a very common sticking point when dealing with metaclasses.)
<jackdaniel> I think that comparing metaclasses to macros, and saying that metaclass "transforms" the class is harmful for understanding what they are because it builds a wrong intuition
<jackdaniel> I think I don't have much more to say on this topic, so I'll put my keyboard to rest
<mrcom> OK, fire away :)
<Josh_2> mrcom: on page 88 of AMOP where they show their example of compute-slots
<Josh_2> they are appending a new slot just like I am
fouric has joined #lisp
<jackdaniel> appending slots to instances is also a valid use of metaobject protocol
<jackdaniel> as well as adding custom initargs to slots (i.e :required t, or :encrypted t) etc
VincentVega has joined #lisp
<jackdaniel> fact that mop is so versatile is unfortunate at times, especially for compilation time optimizations
<Josh_2> jackdaniel: that's what I'm tryna do
<Josh_2> I'm basically just copying half the example from the book as I only want to add an extra slot
<jackdaniel> if you ping me tomorrow maybe I'll be able to help
<jackdaniel> for now I'm taking my toys and going to rest :)
<mrcom> Hmm, and I may be been dealing with a red herring.
<mrcom> The LOCKS slot in METALOCK isn't used, but that's what I was keying on.
<Josh_2> yes I noticed that as well
<Josh_2> that was my mistake, sorry about that
<Josh_2> I have deleted it now
Jesin has joined #lisp
<mrcom> Nor is the second VALIDATE-SUPERCLASS defmethod (STANDARD-CLASS is not s subclass of METALOCK)
<VincentVega> Guys, how do you deal with this problem? When I do eval-defun on (loop) in emacs, I seem to be able to do nothing to interrupt it's execution. If I executed (loop) in REPL, I can do sly-interrupt, but that trick doesn't work with sly-eval-defun. Help please?
<Josh_2> mrcom: Okay deleted!
<Josh_2> That was me clutching at straws again
<mrcom> Josh_2: The SLOT-VALUE-USING-CLASS doesn't do anything, either. It's locking around the metaclass's slots, not the instance's.
<Josh_2> it was working before I messed with compute-slots
<nirved> VincentVega: M-x slime-interrupt
<nirved> VincentVega: there should be a binding for it as well
<nirved> (keyboard binding)
<mrcom> Josh_2: Don't... think so. You were probably seeing the lock messages, but that was while the class was being created.
<mrcom> s/the class/METALOCK class/
<VincentVega> nirved: that's the thing, sly-interrupt doesn't work in this situation (btw I am using sly but it's based on slime)
<nirved> well, slime works
<Josh_2> mrcom: well I guess thats just another issue
<Josh_2> right now I can't even make instances of my cool new class :(
<mrcom> Don't think you need the EFFECTIVE-SLOT-DEFINITION-CLASS or DIRECT-SLOT-DEFINITION-CLASS method redefintions either, since they should already return the standard classes.
<mrcom> Josh_2: Yeah, I'm just running down the code eliminating stuff that _isn't_ the problem.
<_death> VincentVega: when you evaluate it in a lisp buffer, a thread is created to evaluate the form.. you need to interrupt the right thread
<VincentVega> nirved: oh, crap, I was trying to interrupt in the repl window, while I had to call it from the buffer window, so yes it works!
<VincentVega> _death: I see now!
<VincentVega> wasn't aware of this
VincentVega73 has joined #lisp
<Josh_2> oh
<Josh_2> mrcom: well I got rid of that and now it worked
VincentVega73 has quit [Remote host closed the connection]
<Josh_2> It's not exactly what I expected though..
<mrcom> Looking up the docs for those methods...
<Josh_2> oh wait I fixed it
<Josh_2> Yes it works!!
dominic34 has quit [Ping timeout: 264 seconds]
rats has joined #lisp
<mrcom> Hooray!
<Josh_2> it works with just c2mop as well!
<Josh_2> for portability haha
<mrcom> And I think it was a problem because EFFECTIVE-SLOT-DEFINITION class returns STANDARD-effective-slot-definition, not effective-slot-definition (again, a virtual class which isn't supposed to be instantiated.)
bsd4me has quit [Quit: Leaving]
<mrcom> OK, I'm surprised C2MOP works here.
rats has quit [Client Quit]
<mrcom> Oh, no I'm not. It's CLOSER-MOP. Duh.
bsd4me has joined #lisp
<mrcom> Yes, you are correct, using closer-mop is portable. It resolves to the SB-MOP calls on SBCL.
Inline has quit [Ping timeout: 256 seconds]
cosimone has quit [Read error: Connection reset by peer]
cosimone has joined #lisp
bocaneri has quit [Read error: Connection reset by peer]
satousan has joined #lisp
<Josh_2> mrcom: I really appreciate all your help!!
cosimone has quit [Read error: Connection reset by peer]
cosimone has joined #lisp
<mrcom> Josh_2: Why thank you! Enjoyed it, and learned a bit myself.
theseb has quit [Quit: Leaving]
cosimone has quit [Read error: Connection reset by peer]
cosimone has joined #lisp
xrash has joined #lisp
xrash has quit [Excess Flood]
cosimone_ has joined #lisp
cosimone has quit [Ping timeout: 244 seconds]
<Josh_2> Now I need to create a special slot to contain my lock list
cosimone_ is now known as cosimone
xrash has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
v88m has joined #lisp
jw4 has joined #lisp
satousan has quit [Quit: WeeChat 2.3]
narimiran has joined #lisp
tutti has joined #lisp
notzmv has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
akoana has joined #lisp
gaqwas has joined #lisp
<Josh_2> Am I MOP master now xD
nicktick has quit [Ping timeout: 256 seconds]
xrash has quit [Ping timeout: 256 seconds]
VincentVega has quit [Remote host closed the connection]
mankaev has quit [Read error: Connection reset by peer]
mankaev has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
<mrcom> Josh_2: All hail Josh_2!
* Duuqnd bows down to the MOP master
<Duuqnd> s/to/for
v3ga has quit [Ping timeout: 244 seconds]
<Josh_2> xD
<Josh_2> Perhaps I could develop my toy into something actually useful for developing parallel applications
toppo has joined #lisp
gaqwas has quit [Remote host closed the connection]
xkapastel has joined #lisp
<mrcom> Josh_2: Here's a challenge for you: Given an instance X of FOO, a METALOCK class, and (SETF (FOO-SLOT1 X) 42 (FOO-SLOT2 X) 99)
toppo has left #lisp [#lisp]
<mrcom> Josh_2: In another thread, make (CONS (FOO-SLOT1 X) (FOO-SLOT2 X)) always return either (42 . 99) or the pre-SETF values.
<Alfr_> mrcom, and when he's done with that you could just add a slot for a similarly interesting problem, repeat. I think, the underlying problem is that individual atomic operations just don't compose well.
<Alfr_> s/compose/concatenate/
<mrcom> Ah, spoilers!
<Alfr_> Sorry.
bsd4me has quit [Quit: gotta go]
<mrcom> I was just being facetious. It won't really dawn on him until he's worked it out himself.
EvW1 has joined #lisp
bsd4me has joined #lisp
countvajhula has joined #lisp
epony has quit [Remote host closed the connection]
minion has quit [Remote host closed the connection]
specbot has quit [Remote host closed the connection]
minion has joined #lisp
specbot has joined #lisp
terpri has joined #lisp
terpri_ has quit [Ping timeout: 260 seconds]
gaqwas has joined #lisp
gaqwas has joined #lisp
epony has joined #lisp
liberliver has quit [Ping timeout: 240 seconds]
ggole has quit [Quit: Leaving]
narimiran has quit [Ping timeout: 240 seconds]
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
v3ga has joined #lisp
pve has quit [Quit: leaving]
rumbler31 has quit [Ping timeout: 240 seconds]
gaqwas has quit [Remote host closed the connection]
rumbler31_ has quit [Ping timeout: 240 seconds]
slyrus has joined #lisp
shifty has joined #lisp
random-nick has quit [Ping timeout: 240 seconds]
pd_ has joined #lisp
pd_ has quit [Client Quit]
pd_ has joined #lisp
pd_ has quit [Client Quit]
pd_ has joined #lisp
TwoNotes has quit [Disconnected by services]
pd_ has quit [Client Quit]
TwoNotes has joined #lisp
pd_ has joined #lisp
Duuqnd has quit [Quit: Leaving]
mokulus has quit [Ping timeout: 240 seconds]
TwoNotes is now known as Guest47874
pd_ is now known as TwoNotes
random-nick has joined #lisp
v3ga has quit [Ping timeout: 272 seconds]
galex-713 has quit [Quit: No Ping reply in 180 seconds.]
galex-713 has joined #lisp
ayuce has quit [Remote host closed the connection]
Posterdati has quit [Ping timeout: 264 seconds]
rumbler31 has joined #lisp
ahungry has quit [Remote host closed the connection]
gravicappa has quit [Ping timeout: 240 seconds]
Posterdati has joined #lisp
Bourne has quit [Ping timeout: 260 seconds]
q-u-a-n2 has joined #lisp
q-u-a-n24 has quit [Read error: Connection reset by peer]
mindCrime has joined #lisp
<Josh_2> mrcom: I'm aware of the issue
<Josh_2> pjb has already been through this with me when I have talked about making this kinda metaclass before
invergo has joined #lisp
invergo has left #lisp [#lisp]
countvajhula has quit [Ping timeout: 244 seconds]
v88m has quit [Ping timeout: 256 seconds]
Jach[m] has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
Christ0pher has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
galex-713 has joined #lisp
countvajhula has joined #lisp
ft has quit [Ping timeout: 240 seconds]
cosimone has quit [Quit: Quit.]
cosimone has joined #lisp
countvajhula has quit [Remote host closed the connection]
countvajhula has joined #lisp
tutti has quit [Ping timeout: 260 seconds]
<sveit> hello. does the maintainer/anyone familiar with the internals of the series package hang out here?
<sveit> i have found several bugs that i would appreciate advice on how to begin attacking (as well i would love to discuss the package in general). i have also "fixed" a bug that seemed too trivial/actively introduced to have as simple a fix (deleting a line) as it did, and would like to know if i made an oversight before submitting.
jibanes has quit [Ping timeout: 260 seconds]
<fe[nl]ix> sveit: I believe Series has been abandoned for a couple of decades
<Josh_2> sveit: sounds like you are the new maintainer ;)
dra_ has joined #lisp
jibanes has joined #lisp
<sveit> well thanks for the update :) i am surprised, imo it is a great idea, and a great demonstration of something that could really only be done in lisp
<sveit> if people have free time, writing non-trivial code and looking at the series macroexpansions/optimizations is pretty remarkable. except for the bugs :)
dra has quit [Ping timeout: 240 seconds]
<sveit> anyway, if anyone has looked at it before or knows of similar code and has general wisdom i'd like to hear it, since series is written in a somewhat haphazard way.
<sveit> actually if it is abandoned i assume people have alternative libraries that they use to accomplish similar things?
caltelt has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
dra_ has quit [Quit: Leaving]
v3ga has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
mindCrime has quit [Ping timeout: 260 seconds]
shifty has joined #lisp
Bourne has joined #lisp
random-nick has quit [Ping timeout: 240 seconds]
cosimone has quit [Quit: Quit.]
cosimone has joined #lisp
stepnem has quit [Read error: Connection reset by peer]
stepnem has joined #lisp
jibanes has quit [Ping timeout: 240 seconds]
ft has joined #lisp
jibanes has joined #lisp
ft has quit [Remote host closed the connection]
ft has joined #lisp
mindCrime has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
bhartrihari has left #lisp ["Disconnected: closed"]
bhartrihari has joined #lisp
torbo has joined #lisp
shifty has quit [Ping timeout: 260 seconds]
shifty has joined #lisp
<jasom> sveit: loop? :P
<fwoaroof[m]> I usually end up using LOOP for this sort of thing
ft has quit [Remote host closed the connection]
ft has joined #lisp
<fwoaroof[m]> I've also implemented clojure-style transducers for a kind of explicit stream-fusion approach
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
<fwoaroof[m]> I like this better than series-style stream fusion, because it's not as dependent on "magic" compile-time transformations
oni-on-ion has joined #lisp
<sveit> the problem with loop is "reusability" and "composition"; it is kind of tricky/impossible to have some independent looping constructs that can be combined in a generator style. the idea of series is (imo) to provide this while having loop-style performance when the computation is actually built up
<fwoaroof[m]> Yeah, I basically agree with that