kozy has quit [Remote host closed the connection]
kozy has joined #lisp
mathrick has joined #lisp
wxie has joined #lisp
<hooman> =)
<jmercouris> Okay, so I have one more question, if I am going to modify what write-to-string produces for a given object, which method should I override?
<jmercouris> write-to-string or print-object?
<jmercouris> or some other representation entirely?
<Bike> print-object.
<Bike> write-to-string is not a generic function, you can't override anything.
pseudonymous has quit [Ping timeout: 240 seconds]
<jmercouris> Ok, understood, just checking to make sure there isn't some underlying thing below that that one should implement instead
<Bike> the other hook is pretty print dispatch tables. but they're only relevant for pretty printing, and anyway mostly about lisp forms.
pmetzger_ has joined #lisp
pmetzger has quit [Read error: Connection reset by peer]
pmetzger_ has quit [Client Quit]
<jmercouris> The following is giving me "recursive printing error" https://gist.github.com/c006cc47cb64f03da6cf77a697c07a6b
<jmercouris> what does that even mean?
<Xach> jmercouris: where does the "out" variable come from?
ryan_vw has quit [Quit: leaving]
<jmercouris> Yeah, that was my mistake, I changed the variable name without changing it again
<jmercouris> I should stop programming so late
ryanwatk` has quit [Read error: Connection reset by peer]
<jmercouris> Xach: Thank you for spotting it, sorry for wasting your time
ryanwatk` has joined #lisp
<jmercouris> s/variable/argument name
<Bike> in case it wasn't clear, what "recursive printing error" means is that when an error was signaled due to the problem in your print object method, the debugger attempted to print the object as well, hitting the same error
<Bike> as such, printer bugs tend to be a pain in the ass
<jmercouris> Yeah, this is my second printer bug
<jmercouris> I had another fun recursive issue trying to print the contents of a tree :D
shka has quit [Ping timeout: 248 seconds]
ryanwatk` has quit [Read error: Connection reset by peer]
ryanwatk` has joined #lisp
kenster has joined #lisp
kenster has quit [Client Quit]
kenster has joined #lisp
ryanwatk` has quit [Read error: Connection reset by peer]
ryanwatk` has joined #lisp
<jmercouris> the strings from write-to-string seem to also contain quote symbols surrounding them, is this the case, or am I adding them somewhere else accidentally?
kenster has quit [Remote host closed the connection]
<Bike> that's part of the (somewhat complex) printer settings.
<Bike> clhs *print-escape*
<Bike> would be one
<Bike> if you want "human readable" output try princ
<jmercouris> Is there an article or book online that discusses this that you can reccomend?
<jmercouris> I've read practical common lisp, and I don't believe this was mentioned
<Bike> clhs princ
<Bike> kind of explains the differences
<Bike> and lists the million variables
<jmercouris> reading the clhs feels like reading straight man pages
<jmercouris> since I don't have a lot of familiarity with a lot of the concepts they mention, I often get lost so I prefer a book format
<jmercouris> or something like the lisp cookbook, but I'll give it a read and see if I can get it, thanks
fikka has quit [Ping timeout: 268 seconds]
Rawriful has joined #lisp
zachk has quit [Quit: night]
<dim> PAIP is really good too
vancan1ty has joined #lisp
dfgdfgdf has quit [Quit: Leaving]
damke has joined #lisp
jmercouris has quit [Ping timeout: 240 seconds]
varjagg has quit [Read error: Connection reset by peer]
damke_ has quit [Ping timeout: 240 seconds]
vlatkoB has quit [Remote host closed the connection]
jstoddard has joined #lisp
ryanbw has joined #lisp
sjl__ has joined #lisp
markong has quit [Ping timeout: 240 seconds]
sjl has quit [Ping timeout: 248 seconds]
<dwts> Hey guys, I tried the sbcl channel but it's possible that my error is not sbcl-specific so I'll ask here as well. Any ideas why my function here is treated as undefined: https://codepaste.net/8ru46a
<sjl__> dwts: it's not saying your function is undefined, it's saying the function NIL is undefined
<sjl__> > The function COMMON-LISP:NIL is undefined.
<sjl__> the reason is that you're passing (main) as the :toplevel argument to save-lisp-and-die
<sjl__> which calls your function (your function returns NIL)
<sjl__> and so it's saying :toplevel NIL
<sjl__> would be nice if SBCL could warn about passing something that's clearly not a function to s-l-a-d
sjl__ is now known as sjl
<dwts> sjl__: yes, I want main to be the first function to be called. I also tried to use (format nil "") instead of (format t "")
<sjl> yes, so you want to pass the function main as the :toplevel argument
<dwts> hmmm
<sjl> what you're doing right now is CALLING main, and passing its RESULT as :toplevel
<sjl> so you want something like :toplevel #'main
<dwts> oh
<dwts> let me try that
<sjl> or :toplevel (lambda () (main)) would work
<Bike> again, learning some lisp in a more interactive setting would probably help you a lot
<sjl> it's odd that you didn't see the output of your format before the s-l-a-d call returned and your lisp exited. I bet it's stuck in an output buffer somewhere, which gets serialized along with the rest of the image
<dwts> sjl: correct, that worked! but I thought taht #'main and (main) would be the same, but I'm wrong
<sjl> yeah, they're not the same thing
k-stz has quit [Remote host closed the connection]
<sjl> try them in the repl. (main) will call the function and return its result. #'main will return the function object
<dwts> that's true
Baggers has quit [Remote host closed the connection]
<aeth> I probably would confuse people with the API for my game engine if I ever completed it. Some keywords take in #'foo (i.e. a function to call) and others take in (foo) (i.e. generates some data in a convenient way rather than putting really complicated things in the keyword argument directly)
<aeth> And sometimes even foo instead of #'foo (if foo is in a local variable)
<aeth> And I think sometimes I purposefully use 'foo instead of #'foo so I can recompile it and have it update
<dwts> aeth: I'm not a good example of "people" :P
<aeth> dwts: yes, but it's still probably a bad thing that my APIs require deep knowledge of a lot of CL
<sjl> I've done the 'pass a symbol instead of the function for ease of recompilation' in some of my stuff too
python476 has quit [Ping timeout: 255 seconds]
Rawriful has quit [Ping timeout: 248 seconds]
p1n34ppl3 has joined #lisp
Zhivago has quit [Read error: Connection reset by peer]
turkja has joined #lisp
vancan1ty has quit [Ping timeout: 255 seconds]
Josh_2 has quit [Ping timeout: 248 seconds]
EvW1 has quit [Ping timeout: 240 seconds]
Karl_Dscc has joined #lisp
p1n34ppl3 has quit [Remote host closed the connection]
oleo has quit [Ping timeout: 255 seconds]
fikka has joined #lisp
TCZ has joined #lisp
dansa has quit [Ping timeout: 240 seconds]
wigust has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
oleo has joined #lisp
tamburlaine has joined #lisp
wigust has quit [Remote host closed the connection]
LiamH has quit [Ping timeout: 252 seconds]
TCZ has quit [Quit: Leaving]
vydd has quit [Ping timeout: 248 seconds]
d4ryus1 has joined #lisp
d4ryus has quit [Ping timeout: 240 seconds]
rocx has quit [Ping timeout: 252 seconds]
astronav_ has joined #lisp
daniel-s has quit [Remote host closed the connection]
<dmiles> anyone know of a online lisp code formatter?
auxo has quit [Ping timeout: 260 seconds]
LiamH has joined #lisp
<dmiles> finnnly at leazst one cos at a time http://pretty-print.net/
ryanwatk` has quit [Read error: Connection reset by peer]
Karl_Dscc has quit [Remote host closed the connection]
<dmiles> i suppose i shall just (print '...) on a lisp online repl.. duh!
<dmiles> well pretty print since that turns out too ugly
heurist has quit [Ping timeout: 240 seconds]
rocx has joined #lisp
<aeth> I usually just pretty print with :downcase but it's not perfect
<dmiles> :downcase was a good suggestion
dieggsy has joined #lisp
Tobbi has joined #lisp
<aeth> A simple example for people to follow along (you probably know how to do this, but this channel is logged so some readers might not know): (let ((*print-case* :downcase)) (pprint '(defun 2+ (x) (let ((two 2)) (+ two x)))))
_whitelogger has quit [Ping timeout: 250 seconds]
_whitelogger has joined #lisp
tamburlaine has left #lisp ["Killed buffer"]
itruslove has joined #lisp
dieggsy has quit [Quit: ERC (IRC client for Emacs 27.0.50)]
wigust has joined #lisp
<dmiles> in SBCL how would i programatically discover that symbols have a package?
<dmiles> as in i suppose findoing you it had a propety like :package
<dmiles> as in finding it has property like :package
<beach> Good morning everyone!
<beach> clhs symbol-package
<dmiles> beach: *nod* thank you. what i am really after is trying to see if there is some MOPish thing that talks about accessors for built in classes like symbol
Tobbi has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
milanj has quit [Quit: This computer has gone to sleep]
<beach> dmiles: Every system class will have its own accessors.
<beach> Remember that CLOS was added fairly late to Common Lisp. So what you see is a combination of a pre-CLOS language and the MOP.
<dmiles> yeah and probably techncially since symbol isntnce a standard-class it might be awkard tio have given out.. (sb-mop:class-direct-slots (find-class 'symbol))
<Bike> the (standard) accessors for symbol are symbol-name and symbol-package. they're just normal functions though. also they're only readers. and there are no slotds.
<dmiles> note: (sb-mop:class-direct-slots (find-class 'package)) gives them out
<Bike> i think on sbcl packages are structs.
<Bike> that's just how it happens to be on sbcl though.
<dmiles> *nod* I think your and my system Bike.. make *everything* structs rights?
<Bike> My system?
<dmiles> I was thinking it was SICL?
<Bike> that's beach's. he could tell you more about the object representation, but i think there wouldn't be much problem hooking the mop introspection functions up there.
<dmiles> ah well both you (Bike) and beach are so helpfull i get you two confused :(
<Bike> the trick is he's a bunch of sand and i'm a bunch of aluminium
<beach> Heh!
<hooman> trying to place MOP in my 'mind map'. so it is an extension to CLOS.. i am going to read http://ai.eecs.umich.edu/people/dreeves/misc/lispdoc/mop/contents.html
<hooman> =)
* hooman does too
<hooman> boobs, bikes, beaches, butts, beauty; you know ?
* dmiles is going back and fixing hes slot system becasue i based slotname on keywords.. i didnt relaze they are package interned symbols
* dmiles doest grammatically emote
<beach> dmiles: In SICL, every heap-allocated object behaves like a standard instance. Not like a struct.
<dmiles> ah .. actualy i have even moved all my structs to standard-instances
damke_ has joined #lisp
<dmiles> (at least for the time-being .. i get better performance by putting everyhting on help like that)
<dmiles> heap*
damke has quit [Ping timeout: 240 seconds]
<hooman> thats how a lot of people feel about their lives eh
<dmiles> well i cant really say its for performance (though testing says saving in relations if faster than in local blackboard) it just slightly easier doing the code of standard-isntance
<dmiles> code of structures has to be mimicked in a vecotr
<beach> dmiles: How is this issue related to putting things on the heap. That would have to be the default, unless you take dynamic-extent into account.
<dmiles> by putting things on heap i get some free ref-counting
Reinhilde is now known as Ellenor
<beach> I am saying, you pretty much HAVE TO put everything on the heap. It is not an optimization.
fikka has joined #lisp
<beach> dmiles: And I assume you know that reference counting does not work as a general memory-management technique.
<dmiles> i have two heaps actualy.. oh when someone say passes a vector .. thast vector is physically on the real heap but i pretending mentally that its not
dieggsy has joined #lisp
<dmiles> if someone passes out a symbol.. that is on the other heap
<beach> Sounds confusing.
<dmiles> its about who has to do the GC.. for the symbols.. its the host doing the GC
<dmiles> for the vector it is (strill the host) but it gets hints from me
<dmiles> the symbol uses an refcounted prolgo Atom
<beach> If the host is doing the GC, why do you talk about reference counting at all?
<dmiles> oh i just have to be aware of how the host refcounts so i dont mess up
fikka has quit [Ping timeout: 260 seconds]
<dmiles> like leave something with a ref that i dont need anymore
<beach> What makes you think the host uses reference counting as a memory-management technique, and why do you care?
Nalzok has joined #lisp
<dmiles> why i care is jsut so i doing keep using up refernces
<beach> I have no idea what you are talking about. Sorry. I guess it must be something specific to the Prolog host that I don't know enough about.
<dmiles> well when i make a standard-object i gensym a new atom like string_output_stream_znst_666
<dmiles> the prolog host keeps track of where 'string_output_stream_znst_666' is used
<beach> Yeah, what I said.
<dmiles> *nod*
johnnymacs is now known as lisbeths
<dmiles> when i make a vector(1,2,3,4). the host doesnt track.. but adds extra work for me
<dmiles> (well it tracks along the trail )
astronav_ has quit [Remote host closed the connection]
<dmiles> so secretly structures are more complex than a standard object
<dmiles> (or a standard-class)
LiamH has quit [Quit: Leaving.]
<dmiles> and i end up having more paranoia code on structures so i wish they might be just non vecotred things :P
klltkr has joined #lisp
Nalzok has quit [Quit: Mutter: www.mutterirc.com]
<dmiles> my CFFI system https://github.com/swi-to-yap/swicli/blob/master/prolog/swicffi.pl actually calls: http://www.swi-prolog.org/pldoc/doc_for?object=c(%27PL_unregister_atom%27) .. it is going to be exciting allowing it wo work with wam_cl
<dmiles> since swicffi's design was based on lisp in the first place
jstoddard has quit [Quit: Goodnight.]
dddddd has quit [Remote host closed the connection]
Niac_ has quit [Read error: Connection reset by peer]
Niac has joined #lisp
<dmiles> " #<STANDARD-CLASS SB-GRAY:FUNDAMENTAL-BINARY-STREAM> is not finalized." do i need to call something ?
<dmiles> is sb-mop:compute-class-precedence-list enough?
<Bike> well, the more direct thing is finalize-inheritance.
<dmiles> oh its when i call #'class-prototype
<hooman> how do i check if a lisp has TCO ?
<pjb> (labels ((foo (x) (foo (1+ x)))) (foo 0)) ; if it crashes with x small (on the order of millions), then it doesn't have TCO. If it crashes (out of memory) with x gigantical, then it has TCO.
safe has joined #lisp
schoppenhauer has quit [Ping timeout: 248 seconds]
schoppenhauer has joined #lisp
<beach> dmiles: I recommend you use CLOSER-MOP rather than the implementation-specific MOP package.
<dmiles> beach.. oh wow, that is a good idea :)
* dmiles was jsut thinking how he'd have to write the code he was for every lisp
dieggsy has quit [Remote host closed the connection]
fikka has joined #lisp
narendraj9 has joined #lisp
narendraj9 has quit [Read error: Connection reset by peer]
fikka has quit [Ping timeout: 240 seconds]
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
neoncontrails has joined #lisp
<wxie> hi
<beach> Hello wxie.
neoncontrails has quit [Remote host closed the connection]
<wxie> Any audio lib to recommend for lisp?
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
<beach> I think Shinmera might know. But I doubt that he is awake at this time of day.
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
<wxie> beach: ok, thanks
<aeth> wxie: You could try asking in #lispgames since that sounds like a question someone there could answer
<wxie> aeth: Thanks.
neoncontrails has joined #lisp
neoncontrails has quit [Remote host closed the connection]
Guest81424 has quit [Remote host closed the connection]
Guest81424 has joined #lisp
sjl__ has joined #lisp
sjl has quit [Ping timeout: 248 seconds]
wxie has quit [Quit: Bye.]
FreeBirdLjj has joined #lisp
nowhere_man has joined #lisp
eSVG has quit [Ping timeout: 255 seconds]
teddy_error has joined #lisp
nika has joined #lisp
eSVG has joined #lisp
Bike has quit [Quit: Lost terminal]
<dmiles> how do i get the :conc-name of a structure class found with (find-class 'pathname) ?
<dmiles> probably there is no portible way .. so an non portible way is fine
<dmiles> hooman: oops i typed that before i read what you wrote
<hooman> whoa -- funcallable instances
<dmiles> (apropos "-CONC-NAME") shows that a standard accessor is not very standard
<hooman> "Funcallable instances are useful when a program needs to construct and maintain a set of functions and information about those functions. They make it possible to maintain both as the same object rather than two separate objects linked, for example, by hash tables.) " <- this isnt related to your problem at hand at all, is it?
* hooman tries that
<dmiles> last night that was related to a problem i was dealing with
<hooman> SB-KERNEL::DD-CONC-NAME (fbound) ;; all i gotr
<hooman> oh, cool =)
<dmiles> yeah and when i tried (SB-KERNEL::DD-CONC-NAME (find-class 'pathname) )
<hooman> (kind of a day late if it would have helped. but im looking back on CLOS right now because i ended up needing objects/classes in ocaml because i dont think the module system is making sense)
<dmiles> The value #<STRUCTURE-CLASS COMMON-LISP:PATHNAME> is not of type SB-KERNEL:DEFSTRUCT-DESCRIPTION.
<mfiano> That's going to be pretty difficult to do after the fact. You could try parsing struct fields for common parts, or you could wrap defstruct and cache this information.
<hooman> hmmm , yes thats just what i got
<dmiles> mfiano: what i was afraid of
<dmiles> if i could glean out the SB-KERNEL:DEFSTRUCT-DESCRIPTIONs I'd be all set
<dmiles> then after it is workign then .. i go bacvk and do it correctly :P
fikka has joined #lisp
<dmiles> so starting out with the miminalistic barely working whatnot.. that goes in an loads .lisp files that make it correct
neoncontrails has joined #lisp
<dmiles> where cl:loop stops pointing to useless int-foo:%loop .. but doing this with the built-in-classes first
fikka has quit [Ping timeout: 248 seconds]
<hooman> hmm
neoncontrails has quit [Ping timeout: 255 seconds]
Nalzok_ has joined #lisp
damke has joined #lisp
damke_ has quit [Ping timeout: 240 seconds]
Nalzok_ has quit [Client Quit]
<dmiles> what i am doin is *slightly* wrong headed but allows me little things immediately like being able to allow claz_synonym_stream to be defined by a symbol name
neoncontrails has joined #lisp
<dmiles> (before reading the first .lisp file)
<hooman> whoa the duplication, the patterns
<hooman> why not use a CL macro to make that =O ??
<hooman> or tell me it is generated pls
<dmiles> its genrated yes
rippa has joined #lisp
<hooman> ah whoa yea its huge, it wasnt loading it all at first =P
<dmiles> (type of thing)
neoncontrails has quit [Ping timeout: 258 seconds]
<dmiles> (smaller file conveying same type of info)
<hooman> ah =)
<hooman> question
neoncontrails has joined #lisp
<hooman> the part with "(list ..." could it be simplified in lisp ? for eg. (defun method-info (apply-each '(method-qualifiers clos:method-lambda-list clos:...))) ?
<dmiles> yeah could do like an inverse mapcar sure
<dmiles> mapping over the list of function names
neoncontrails has quit [Ping timeout: 255 seconds]
teddy_error has quit [Quit: Peace ☮︎]
<Shinmera> What's up with people not just idling on irc for a bit to get an answer.
<Shinmera> Anyway, good morning
* dmiles attempts to win the uglyist lisp code context
<Shinmera> You ain't done with that until you implement MUMPS syntax for the reader.
* dmiles would love to see that
neoncontrails has joined #lisp
<Shinmera> I wouldn't
<dmiles> i keep meaning leanr MUMPS .. i belive some of its idioms can translate to Prolog
neoncontrails has quit [Ping timeout: 240 seconds]
Oladon has quit [Read error: Connection reset by peer]
<beach> Hello Shinmera.
<dmiles> at least its ARRAYS system
Oladon has joined #lisp
<Shinmera> beach: You remembered right, by the way, but since wxie left I guess it was for naught.
ryan_vw has joined #lisp
neoncontrails has joined #lisp
<beach> Yeah. :(
neoncontrails has quit [Ping timeout: 240 seconds]
klltkr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
FreeBirdLjj has quit [Remote host closed the connection]
fikka has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
neoncontrails has joined #lisp
fikka has quit [Ping timeout: 268 seconds]
neoncontrails has quit [Ping timeout: 250 seconds]
<Shinmera> Update ASDF
<dmiles> thx
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 250 seconds]
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 255 seconds]
vlatkoB has joined #lisp
neoncontrails has joined #lisp
nika has quit [Quit: Leaving...]
neoncontrails has quit [Ping timeout: 250 seconds]
stef19 has joined #lisp
Nalzok_ has joined #lisp
neoncontrails has joined #lisp
Nalzok_ has quit [Quit: Mutter: www.mutterirc.com]
neoncontrails has quit [Ping timeout: 240 seconds]
isBEKaml has quit [Quit: leaving]
shka has joined #lisp
stef19 has left #lisp [#lisp]
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 250 seconds]
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 250 seconds]
Nalzok_ has joined #lisp
Nalzok_ has quit [Client Quit]
neoncontrails has joined #lisp
mishoo__ has joined #lisp
neoncontrails has quit [Ping timeout: 258 seconds]
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 250 seconds]
neoncontrails has joined #lisp
Nalzok_ has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
Nalzok_ has quit [Remote host closed the connection]
neoncontrails has quit [Ping timeout: 250 seconds]
auxo has joined #lisp
brendyn has joined #lisp
neoncontrails has joined #lisp
fikka has joined #lisp
random-nick has joined #lisp
neoncontrails has quit [Ping timeout: 255 seconds]
neoncontrails has joined #lisp
shifty has joined #lisp
fikka has quit [Ping timeout: 268 seconds]
neoncontrails has quit [Ping timeout: 252 seconds]
safe has quit [Read error: Connection reset by peer]
eSVG has quit [Ping timeout: 255 seconds]
<mrottenkolber> so I want to search a tree for a subtree, i.e. like find but for trees. Suggestions?
wxie has joined #lisp
<hooman> what kind of tree
milanj has joined #lisp
<Shinmera> recurse through conses, test each cons against your tree by EQUAL.
<mrottenkolber> more like TREE-EQUAL but ok, I thought that much
neoncontrails has joined #lisp
Karl_Dscc has joined #lisp
neoncontrails has quit [Ping timeout: 255 seconds]
Nalzok_ has joined #lisp
damke_ has joined #lisp
neoncontrails has joined #lisp
damke has quit [Ping timeout: 240 seconds]
Nalzok_ has quit [Client Quit]
neoncontrails has quit [Ping timeout: 255 seconds]
shifty has quit [Ping timeout: 248 seconds]
neoncontrails has joined #lisp
<hooman> i wonder where is tree-diff, tree-add, tree-subtract ..
fikka has joined #lisp
neoncontrails has quit [Ping timeout: 250 seconds]
<mrottenkolber> hooman: probably too broad for spec, i.e. what if you need fuzzy match?
<mrottenkolber> just found out TREE-EQUAL can kinda handle fuzzy matches via test/test-not
neoncontrails has joined #lisp
<mrottenkolber> Ohh, can I get the most specific type of two objects?
<Shinmera> No
<mrottenkolber> i.e. (<supercool> 1.0 1) -> number
<mrottenkolber> why not? :-/
<Shinmera> Because there's an infinite number of them.
<mrottenkolber> Because a type can have multiple super types?
<Shinmera> No because types can be infinitely composable
neoncontrails has quit [Ping timeout: 252 seconds]
<Shinmera> You can get the closest ancestor if you have classes, for instance.
<Shinmera> But not for types in general unless you define your own restrictive rules.
<mrottenkolber> I see
<mrottenkolber> I guess for my case the closest shared superclass would be enough
neoncontrails has joined #lisp
<Shinmera> Not sure if that's semantically correct entirely, but you could use class-precedence-list on both of your classes and then find the earliest common class in both lists.
<mrottenkolber> Right, some MOPery :-)
<mrottenkolber> thanks!
<mrottenkolber> probably overkill for what I am doing but I needed to know^^
Trystam has joined #lisp
<caffe> i have a really silly question... if two users are running two seperate sbcl processes, are they completely sandboxed, so to speak? or is there a way those two sessions can be connected?
<mrottenkolber> caffe: "sandboxed"
<mrottenkolber> caffe: if you mean "operating system processes"
<caffe> sorry, i may be misusing some terms
<mrottenkolber> no problem
<mrottenkolber> I am no better
<mrottenkolber> ;-)
neoncontrails has quit [Ping timeout: 246 seconds]
<mrottenkolber> terminology in computing is all over the place anyhow
<caffe> yeah, unfortunately
pseudonymous has joined #lisp
<mrottenkolber> want sum crates? ;P
<caffe> naw
Tristam has quit [Ping timeout: 240 seconds]
Trystam is now known as Tristam
<caffe> but say, would something like an instant messaging system be possible in that circumstance
<mrottenkolber> caffe: so I guess (if you want that) you can have two users attach to the same SBCL via SLIME
<mrottenkolber> even by default (if SWANK still listens on localhost by default?)
<mrottenkolber> but generally speaking you would need some form of IPC
neoncontrails has joined #lisp
<mrottenkolber> you don’t get a built-in like UNIX’ wall AFAIK
<caffe> hm.. i was sort of afraid of that
<caffe> sbcl can spawn a bash process though, right?
<mrottenkolber> sure
<caffe> hm... it might be enough if just the client portion was in sbcl
<caffe> is sbcl able to inherit environment variables from the shell that spawned it?
<beach> caffe: Do you want such communication, or do you want to avoid it?
<caffe> between different users' sbcl processes? yeah, if possible
neoncontrails has quit [Ping timeout: 258 seconds]
<caffe> but having them connect to the same process via slime isn't an option for this site
<caffe> there would have to be some way to identify which user was speaking
neoncontrails has joined #lisp
MrBusiness has quit [Quit: https://www.youtube.com/watch?v=xIIqYqtR1lY -- Suicide is Painless - Johnny Mandel]
<Shinmera> There's already existing chat systems in CL
MrBusiness has joined #lisp
<caffe> oh?
neoncontrails has quit [Ping timeout: 250 seconds]
<Shinmera> Lichat, for instance. https://shirakumo.github.io/lichat-tcp-client/
<Shinmera> Or Circ, which just uses IRC. Don't know if I broke it in the meantime though. https://github.com/Shirakumo/maiden/tree/master/examples/circ
<caffe> lichat is very close to what i had in mind, actually. thanks for the heads up
<Shinmera> YOu'll probably want some convenience functions on top of the TCP client there
ym has quit [Quit: Leaving]
<caffe> probably.. i plan on customizing it for the site a bit
<Shinmera> If I understand you want to let people talk with each other from the repl?
<caffe> yes
<Shinmera> Right, ok
<Shinmera> Lichat also has a WS server and JS client that you could use from the browser.
<caffe> like a web browser?
<Shinmera> What else?
<Shinmera> There's a live system here http://chat.tymoon.eu/
ym has joined #lisp
<caffe> it seems to fail to connect
<Shinmera> Does it say anything useful or just error 1006?
damke has joined #lisp
<caffe> Condition of type [CONNECTION-FAILED]: non-CONNECT update
<Shinmera> Uh, ok
<Shinmera> Did you enter a password?
<caffe> yep
neoncontrails has joined #lisp
<Shinmera> Clear that out
<Shinmera> I should make that more clear, sigh
<caffe> it's okay. thank you
yeticry_ has joined #lisp
damke_ has quit [Ping timeout: 240 seconds]
yeticry has quit [Ping timeout: 240 seconds]
<caffe> by any chance, is there an elisp client for this?
neoncontrails has quit [Ping timeout: 252 seconds]
<Shinmera> Not unless someone else writes it
<caffe> hmm... i might have to take a stab at it
<Shinmera> My next target would be Android but I don't know when I can be bothered to do that.
<caffe> oh, this is your project?
<Shinmera> Yes
<Shinmera> All the Shirakumo stuff is also my stuff
jmercouris has joined #lisp
<caffe> i'm pretty impressed by the protocol
Karl_Dscc has quit [Remote host closed the connection]
<Shinmera> Glad to hear.
<jmercouris> Hi all, (disclaimer, I know this is not a forum for legal advice), is it possible to relicense your own code after having released it under a license? Do previous version of that software fall under the new license, or the license given at the time of release?
<caffe> the ability to send files is a particularly nice touch compared to urc
<caffe> irc*
<Shinmera> caffe: In my opinion that's the least significant improvement over IRC, heh
<jackdaniel> jmercouris: if someone acquired your code from previous license, he may use it on its conditions
<caffe> i've only been aware of it for 5 minutes :P
<jackdaniel> you are free to relicense code to which you have the copyrights, but such relicense won't software previously fetched
<caffe> i'm sure i'll see more as i work with it
<jmercouris> jackdaniel: Could they for example, clone the repository, and use an older commit that was licensed under a different license?
<jackdaniel> sure, why not?
<jackdaniel> do you mind sharing why are you concerned about that?
<jackdaniel> s/about/with/
<Shinmera> Intellectual property is, well, intellectual. If your "previous ideas" were available under a certain license it doesn't matter how they are obtained
<jackdaniel> to phrase it differently, license doesn't work retroactive
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 252 seconds]
<Shinmera> You could probably license your code completely restricted (or don't license it at all) and then just give people contracts to allow them to use it under your conditions if you wanted to retain the ability to deny access in the future.
<Shinmera> But I'm no lawyer so
<jackdaniel> scaas – source code as a service ;D
<Shinmera> scaam: source code as a merchandise
vaporatorius has quit [Ping timeout: 268 seconds]
neoncontrails has joined #lisp
neoncontrails has quit [Ping timeout: 252 seconds]
epony has quit [Read error: Connection reset by peer]
neoncontrails has joined #lisp
<_death> minion: what does scamm stand for?
<minion> Sweater Chirography Achlorophyllous Maddle Multiform
neoncontrails has quit [Ping timeout: 240 seconds]
neoncontrails has joined #lisp
wxie has quit [Remote host closed the connection]
wxie has joined #lisp
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
neoncontrails has quit [Ping timeout: 255 seconds]
scymtym has quit [Ping timeout: 246 seconds]
dansa has joined #lisp
dansa has quit [Changing host]
dansa has joined #lisp
bigos has joined #lisp
angavrilov has joined #lisp
neoncontrails has joined #lisp
<jmercouris> jackdaniel: I'm just worried about somebody taking my open source software and making a knock-off product of mine
<jmercouris> jackdaniel: E.g. a centOS type situation
<jmercouris> I don't mind sharing my code with the world and letting individuals use it for free and modify it, the issue I have is with a big corporation copying and domineering my product
<jmercouris> So I've been looking at dual-licensing, but I'm not sure it makes sense to dual license with a BSD license, or even how I could modify my license to avoid this situation
<jmercouris> Shinmera: This is possible, but I want a license that allows other developers to freely use and extend it, which is why I originally released under BSD, it seems the most free to me
neoncontrails has quit [Ping timeout: 240 seconds]
<Shinmera> I just don't even get to the point where I believe that anyone gives enough of a shit about my stuff to want to turn a profit off of it
<jmercouris> But with that freedom comes another cost, I guess this is part of an age old debate
<jmercouris> Shinmera: I have a philosophy like this: I don't buy car insurance because I plan on being involved in a car-accident, but it does not hurt to be safe
<Lord_of_Life> What cost comes from using BSD?
<Shinmera> You're missing the point
<jmercouris> Lord_of_Life: The possibilty that some corporation may make a fork, and contribute nothing back to the community
<jmercouris> That they will profit off the work of other developers for free, but pay nothing in return
<Lord_of_Life> "Someone in the world might be a dick" ey?
<jmercouris> Lord_of_Life: Lol, unbelievable, but it is possible :P
<jmercouris> I've been very firmly pro BSD, but the whole Minix Intel CPU fiasco has got me thinking
<Shinmera> People are gonna do whatever the hell they want and no license is going to stop them.
<jmercouris> You know, that's super true, a corporation wealthy enough could sue me into oblivion and use my software however they want anyway
<jmercouris> that's kind of a liberating though
<jmercouris> s/though/thought
<Shinmera> I just picked a license once and have been rolling with it because I got better things to worry about :shrug:
<jmercouris> By the time I would have enough money to even compete with them, it would be effectively a moot issue, I will probably just occupy a niche
<Shinmera> Aaand Colleen is gone again, fuck
<jmercouris> I don't think a License is something small, I think it's important especially if you consider the impact it has infinitely into the future
<jmercouris> Shinmera: What are you talking about? Who is Colleen?
<Shinmera> My bot
Colleen has joined #lisp
<Shinmera> Colleen: you are the worst thing I've ever made.
neoncontrails has joined #lisp
markong has joined #lisp
<jmercouris> What is the purpose of this bot?
Colleen has quit [Client Quit]
<Shinmera> Log channels, primarily
<borodust> hello!
<borodust> question: is there a documentation tool I can provide custom renderer for?
<Shinmera> Depends on what you mean by documentation tool and custom renderer
Colleen has joined #lisp
<borodust> api that would allow me to output documentation text/files in the format i want
<borodust> from docstrings basically
<Shinmera> Staple can only emit HTML, but you can change the HTML template however you want.
neoncontrails has quit [Ping timeout: 252 seconds]
<borodust> hmm
scymtym has joined #lisp
<turkja> good example of someone taking BSD-like license is this new intel's MINIX-based MT... it's like the most popular OS now in the world :D
<borodust> Shinmera: is clip tightly integrated into staple? Can I replace it with my own renderer fairly easily?
<Shinmera> Yes and I don't know.
<Shinmera> What outside of HTML do you want to generate and why?
<borodust> markdown to put into my jekyll-based website
<Shinmera> Markdown is HTML compatible fwiw.
<turkja> jmercouris
<turkja> sorry, should read before typing
<borodust> Shinmera: hopefully so, but the problem is that i don't want it to look foreign style-wise. I'll look into staple to see if i can avoid styling issues. Thanks!
pseudonymous has quit [Ping timeout: 246 seconds]
nowhereman_ has joined #lisp
<Shinmera> Its symbol information extraction stuff is pretty self-contained, but that's only a part of what Staple does
<jmercouris> turkja: It's okay, no problem, happens all the time to me :D
<jackdaniel> jmercouris: you either say "no strings attached" with BSD license and you willfully agree for such thing happening, or you put GPL label on it if you care that the source is not closed down (by some evil corp ™), or you have propietary license with EULA of some sort
<jackdaniel> you can't claim it's free (or open) if you prohibit forking whatsoever
<jmercouris> jackdaniel: How about this, BSD for non-commercial uses, GPL for commercial, is this possible?
<turkja> jmercouris: hehe... i was pro GPL even before the Intel minixgate, but yeah...
<jackdaniel> huh? it's either BSD or it is not, there is no BSD-no-commercial clause ;]
<jmercouris> Yeah, I meant a modified version of the BSD license that says "this license works this way if the software is used for non-commercial purposes, otherwise it works this way"
<jackdaniel> what you can do (given you have all rights to your software) is GPL by default with possibility to buy separate license for evil corp™
<jmercouris> so I'd like to only limit it in this respect
nowhere_man has quit [Ping timeout: 268 seconds]
<jmercouris> that's something to think about I guess
<jackdaniel> then it's nowhere close BSD license
<jackdaniel> so calling it BSD would be misleading
<jackdaniel> g2g o/
<jmercouris> Yeah, I getcha, I'd have to invent a new license effectively
neoncontrails has joined #lisp
<jmercouris> ok, cya!
pseudonymous has joined #lisp
Bike has joined #lisp
dddddd has joined #lisp
neoncontrails has quit [Ping timeout: 252 seconds]
neoncontrails has joined #lisp
AntiSpamMeta2 has joined #lisp
AntiSpamMeta has quit [Killed (wolfe.freenode.net (Nickname regained by services))]
AntiSpamMeta2 is now known as AntiSpamMeta
pseudonymous has quit [Remote host closed the connection]
pseudonymous has joined #lisp
neoncontrails has quit [Ping timeout: 252 seconds]
epony has joined #lisp
neoncontrails has joined #lisp
Rawriful has joined #lisp
neoncontrails has quit [Ping timeout: 240 seconds]
neoncontrails has joined #lisp
pjb has quit [Remote host closed the connection]
vydd has joined #lisp
vydd has quit [Changing host]
vydd has joined #lisp
ryanwatkins has quit [Remote host closed the connection]
neoncontrails has quit [Ping timeout: 240 seconds]
pjb has joined #lisp
damke_ has joined #lisp
damke has quit [Ping timeout: 240 seconds]
bigos has quit [Quit: Leaving]
FreeBirdLjj has joined #lisp
joncol has joined #lisp
pjb has quit [Ping timeout: 240 seconds]
neoncontrails has joined #lisp
<joncol> How do you create an empty loop? I want to call a function for its side effects until it returns something truthy...
<Shinmera> (loop until (bla))
<joncol> Ah
<joncol> Thx
neoncontrails has quit [Ping timeout: 250 seconds]
<Shinmera> Hooray (?) for problems not being my fault for once. https://github.com/sionescu/bordeaux-threads/issues/35
Tobbi has joined #lisp
<jmercouris> I've been waiting to hear back from common-lisp.net about a mailing list for around 2 weeks now I think, what's the usual pass/fail response time?
Colleen has quit [Quit: Colleen]
Colleen has joined #lisp
neoncontrails has joined #lisp
Colleen has quit [Client Quit]
Colleen has joined #lisp
<joncol> Is there a function to check that a predicate holds for all elements in an array?
milanj has quit [Read error: Connection reset by peer]
milanj has joined #lisp
<Bike> clhs every
<Bike> well, that works for vectors, not general arrays
<Shinmera> And then there's loop of course: (loop for e across array always (f e))
neoncontrails has quit [Ping timeout: 250 seconds]
<joncol> OK, thx
<joncol> So arrays are not treatable as sequences?
eSVG has joined #lisp
<Shinmera> clhs array-total-size
<Shinmera> clhs row-major-aref
<Shinmera> You can iterate over it, but arrays are not sequences.
<Bike> one dimensional arrays are called vectors, and vectors are sequences
wxie has quit [Quit: Bye.]
<Bike> arrays with other ranks are not sequences.
<joncol> OK! Then every should work...
neoncontrails has joined #lisp
papachan has joined #lisp
vancan1ty has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
eSVG has quit [Ping timeout: 255 seconds]
papachan has quit [Client Quit]
neoncontrails has quit [Ping timeout: 250 seconds]
papachan has joined #lisp
neoncontrails has joined #lisp
FreeBirdLjj has joined #lisp
ryanwatkins has joined #lisp
astronav_ has joined #lisp
EvW has joined #lisp
neoncontrails has quit [Ping timeout: 250 seconds]
turkja has quit [Ping timeout: 260 seconds]
neoncontrails has joined #lisp
<scymtym> displaced arrays can sometimes help: (let ((a #2A((1 2) (3 4)))) (every #'evenp (make-array (array-total-size a) :displaced-to a)))
astronav_ is now known as astronavt_
<dwts> hey guys, I'm using sb-ext:save-lisp-and-die to create a core file of my current code. Executing that from sbcl I get the requested executable. But when executing the same code from emacs/slime (C-c C-k) I get a .fasl file instead. Is it possible to create the executable straight through slime?
<Bike> making an executable usually messes up the image so you can't keep using it, and doesn't work well with multiple threads.
<beach> C-c C-k does not run save-lisp-and-die.
<dwts> beach: so, since the save-lisp-and-die is the last line of my code you are saying that this is not executed at all?
neoncontrails has quit [Ping timeout: 258 seconds]
<beach> dwts: You didn't mention that before.
<Bike> dwts: we don't know what file you're compiling and loading.
<dwts> beach: I didn't know it mattered. I can paste the code if that helps you
<beach> dwts: But, yes, Bike is right, SLIME requires multiple threads, and you can't save an image when multiple threads are running.
<Bike> it doesn't require multiple threads, it's just going to use them for sbcl without further configuration
<beach> OK.
<dwts> here is what I'm trying https://codepaste.net/byja0u
<joncol> Using the LOOP macro, can you change the loop index inside the body?
<Bike> loop index? like a "for i upto 7" variable?
<joncol> yes
<Bike> you shouldn't modify it, no
pjb has joined #lisp
<beach> joncol: You can get around such restrictions by using (loop for index = 0 then (1+ index) ...)
<joncol> I want to copy only certain rows of a 2d array...
<scymtym> dwts: compiling and loading that code in SLIME using C-c C-k should result in an error message about multiple threads running as was pointed out. does that not happen?
<beach> joncol: How do you determine when to copy a row?
<dwts> scymtym: that is correct
<joncol> beach: I'm making tetris :)
<joncol> So it depends on the contents of the cells of the row.
<joncol> I want to collapse the empty rows of the 2d array representing the field.
<beach> Use FOR = THEN instead of FOR FROM as I said. Then you can modify the variable freely.
<scymtym> dwts: in what sense? does it result in an error message or not? (note that the presence of the fasl file is not an indication of success)
<joncol> I was looking at REDUCE as well, but it seems that is not very general in common lisp, the reducing function can only take elements as arguments?
neoncontrails has joined #lisp
<beach> joncol: REDUCE is indeed very general, but it has nothing to do with your problem.
<joncol> Yes, I could use a reduce over the original playing field, accumulating only the non-emty rows.
<beach> joncol: No you could not, because that is not what REDUCE does. It is unrelated to your problem.
turkja has joined #lisp
<joncol> beach: isn't reduce the same as fold?
<joncol> (In Haskell etc)
<dwts> scymtym: the error says " Cannot save core with multiple threads running.", then a few more lines with other threads (swank, control-thread, reader-thread etc). I thought that getting a fasl file is indeed a success, although I'm currently trying to replace teh manual (load "file.lisp") (save-lisp-...) with slime. Are you saying that this is not possible through slime?
<Bike> it is, and as such works on sequences, which multidimensional arrays are not.
<joncol> Well, can it not be regarded as a sequence of sequences?
<beach> No
<Bike> it can, but in lisp it is not.
<Bike> dwts: if it says 'cannot save core' it can't save the core, which is what save-lisp-and-die does. failure. the fasl might just be for your script.
<Bike> dwts: do not disregard error messages
<scymtym> joncol: you can make an "adapter" using a displaced array to regard it as a sequence, as i wrote above
<Bike> joncol: of course, you could make an actual vector of vectors instead, but that's distinct from a multidimensional array.
<dwts> Bike: i do not disregard them, I don't understand if it's failing because I have a syntax error or because of slime's limitations
<Bike> it seems pretty clear to me. you have multiple threads running, so it can't save a core.
neoncontrails has quit [Ping timeout: 252 seconds]
<dwts> multiple threads as in multiple "slimes" ?
<Bike> no, as in multiple threads. you know what a thread is, right?
<Bike> slime uses several, by default, on sbcl.
<Bike> you can configure it to not do that, and then you might be able to dump an executable. but i don't think there is much reason to dump an executable from slime.
<scymtym> dwts: i think the general advice is "devel in SLIME until satisfied, then, if you really must, invoke SBCL directly to create an executable or use specialized tools such as cl-launch or buildapp"
<_death> joncol: if you had a sequence of sequences, you might prefer to use something more specific than REDUCE, e.g. REMOVE-IF-NOT.. if you deal with a 2D array and want to work with it directly, LOOP and REPLACE will do
stnutt has joined #lisp
<dwts> scymtym: I'm trying to produced an executable. I can't devel in slime if slime fails to produce executables for me :P
<Bike> sure you can. you develop whatever, then write up a script file that dumps an executable like you already did, and then you load the script from an sbcl outside slime.
<dwts> which makes scymtym's suggestion not functional since I can't code devel with slime. I'm sorry but I'm confused here, I thought that the "best practice" is to devel through slime?
<scymtym> dwts: your program will eventually be doing something despite printing "hello world", right? split this functionality into small parts on develop them interactively in SLIME. only then put together a commandline interface and create an executable
nowolfer has quit [Ping timeout: 240 seconds]
Amplituhedron has quit [Read error: Connection reset by peer]
<turkja> what would be your #1 option for distributing CL program to windows OS?
<Bike> dwts: dumping an executable isn't something you need to do during development, basically.
<dwts> scymtym: yes, it's supposed to accept a few cli arguments. then based on the input, execute specific functions. Similar to other cli tools in C
nowolfer has joined #lisp
<scymtym> dwts: you can test this by typing (main "ARGUMENT1" "ARGUMENT2") or similar into your SLIME repl
<dwts> Bike: ok, then how am I suppose to test that my code works (parses arguments properly) if I do not create an executable?
<dwts> scymtym: hm, ok.
neoncontrails has joined #lisp
<Bike> your program probably involves more than parsing command line arguments. you can develop the parts other than the very last interface step.
<turkja> i was thinking about shipping installer with sbcl+all the libs included, then compile image..
<dwts> Bike: maybe I'm thinking an a C-ish way too much. In see, I would create all the acceptable parameters with a prototype function for say -h, -w, -k etc. Then I would start adding the real code for every function. Seems like a different approach is required for lisp
<dwts> In C*
<Bike> it's very different from developing a C program, yes.
<scymtym> dwts: i recommend starting with the actual functionality and working on the commandline interface later
<Bike> what i would do is test the internals on their own. like, i don't know what your program is doing, let's say it's evaluating polynomials. i'd start by having a function that takes some internal data structure representing a polynomial and evaluates it, and then once i got that working i could start thinking about the command line.
<Bike> well, no, then i'd write the parser, then command line
<dwts> Bike: so you would also write your own cli-parser?
<turkja> then of course one could simply stop thinking in terms of C*... just load a configuration *program* written in Lisp?
<Bike> a parser to make my internal data structures out of a string of test defining a polynomial, i meant.
neoncontrails has quit [Ping timeout: 252 seconds]
<Bike> command line arguments are an afterhought to the actual functionality
tfeb has joined #lisp
<dwts> hmm, okay
<Bike> also i think there are libraries for command line argument parsing i could use.
<dwts> yes, there are, although I can't say I'm happy with the way they are documented
malice` has joined #lisp
hvxgr has quit [Remote host closed the connection]
orivej has joined #lisp
dansa has quit [Ping timeout: 248 seconds]
ksool has quit [Ping timeout: 240 seconds]
<Bike> i can believe that
<dwts> lol
neoncontrails has joined #lisp
<Xach>
astronavt_ is now known as astronavt
neoncontrails has quit [Ping timeout: 250 seconds]
trosa-work has joined #lisp
astronavt has left #lisp ["Leaving..."]
astronavt has joined #lisp
attila_lendvai has quit [Quit: Leaving.]
neoncontrails has joined #lisp
nowhereman_ has quit [Ping timeout: 240 seconds]
neoncontrails has quit [Ping timeout: 250 seconds]
SaganMan has joined #lisp
<xantoz> t
neoncontrails has joined #lisp
fikka has quit [Ping timeout: 248 seconds]
<beach> Bike: I know we agreed in the past that you could use the SICL boot procedure to test some of your code. But don't do that right now. The code is being worked on and is not in a stable state right now.
<Bike> gotcha.
neoncontrails has quit [Ping timeout: 250 seconds]
milanj has quit [Quit: This computer has gone to sleep]
neoncontrails has joined #lisp
Karl_Dscc has joined #lisp
Amplituhedron has joined #lisp
jmercouris has quit [Remote host closed the connection]
jmercouris has joined #lisp
neoncontrails has quit [Ping timeout: 246 seconds]
ryanwatk` has joined #lisp
shifty has joined #lisp
ryanwatk` has quit [Read error: Connection reset by peer]
ryanwatk` has joined #lisp
ryanwatkins has quit [Read error: Connection reset by peer]
neoncontrails has joined #lisp
varjagg has joined #lisp
Amplituhedron has quit [Ping timeout: 268 seconds]
joncol has quit [Quit: leaving]
neoncontrails has quit [Ping timeout: 248 seconds]
fikka has joined #lisp
smurfrobot has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
juki has joined #lisp
<smurfrobot> is there a place i could download a body of common lisp programs i could download for data mining purposes?
neoncontrails has joined #lisp
fikka has quit [Ping timeout: 258 seconds]
<dwts> code repositories?
<smurfrobot> yes
neoncont_ has joined #lisp
aindilis has quit [Ping timeout: 260 seconds]
<smurfrobot> somewhere i can easily grab some commonly used programs to test assumptions about what features in the language programs commonly use.
<hooman> common-lisp.net hosts several popular ones, else github.com has many - but dont forget to see the quicklisp repo.
<hooman> *list
<dwts> well, github has a lot repos, probably bitbucket too. But some people host their code by themselves. There's also clike that refers to code projects.
<pjb> smurfrobot: install com.informatimago, install quicklisp, then: (com.informatimago.tools.quicklisp:quick-install-all)
neoncontrails has quit [Ping timeout: 255 seconds]
<dwts> wow
<pjb> smurfrobot: and then you can mine ~/quicklisp/dists/quicklisp/software/
trosa-work has quit [Remote host closed the connection]
<pjb> Perhaps, better if you install quicklisp before com.informatimago. the later you can install with cd ~/quicklisp/local-projects ; mkdir -p com ; cd com ; git clone http://gitlab.com:com-informatimago/com-informatimago.git informatimago
itruslove has quit [Ping timeout: 255 seconds]
<smurfrobot> thanks.
<dwts> guys, when I have something like this: (defparameter k (list "hi" "hey" "bye")), why is member returning nil?: (member "hi" k) --> nil
<_death> the default test function is EQL
EvW has quit [Ping timeout: 240 seconds]
itruslove has joined #lisp
wigust has quit [Ping timeout: 248 seconds]
<basket> dwts: Because it uses EQL by default for checking, and identical looking strings aren't necessarily EQL. You can say like (member x l :test #'equal) or whatever
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
mson has quit [Quit: Connection closed for inactivity]
<dwts> yep, that was it
EvW1 has joined #lisp
lnostdal has quit [Ping timeout: 258 seconds]
wigust has joined #lisp
<pjb> dwts: you need to search the same string! (let ((same "hey")) (defparameter *k* (list "hi" same "bye")) (member same *k*)) #| --> ("hey" "bye") |#
astronavt has quit [Remote host closed the connection]
EvW1 has quit [Ping timeout: 246 seconds]
klltkr has joined #lisp
<dwts> where are you guys reading function definitions/documentation? I was using this one: http://clhs.lisp.se/Body/f_mem_m.htm#member . I see that EQL is not mentioned there
<pjb> dwts: you need to read the begining of the chapters, not only the dictionaries!
<hooman> i use slime and emacs for docs
<pjb> dwts: Reading guide: 1- read all the chapters without reading the dictionaries (only read the TOC of the dictionaries). 2- read the dictionaries. 3- read again the dictionary each time you use an opertor for the first time. 4- read again the chapters and the dictionaries each time you have such a question.
<dwts> hooman: you mean C-c C-d C-d?
<hooman> F10 =(
<dwts> lol
<dwts> pjb: so, In myh case, this is the the chapter? http://clhs.lisp.se/Body/t_member.htm
<basket> dwts: In general, functions that use an equality predicate like that will default to EQL
<dwts> hm, ok
<pjb> dwts: click on the up buttons everal times! http://clhs.lisp.se/Body/04_.htm
<basket> dwts: That's for the MEMBER type specifier, it's different from the function
* dwts *sigh*
<pjb> notice the t_ vs. the f_
<scymtym> dwts: in this case, the information is here:
<scymtym> clhs 17.2.1
<specbot> Satisfying a Two-Argument Test: http://www.lispworks.com/reference/HyperSpec/Body/17_ba.htm
<scymtym> not very easy to find, admittedly
<basket> Yeah, I wouldn't have known where it said that
fikka has joined #lisp
<pjb> dwts: notice this is the reason why the reading guide involves reading the chapters before the dictionaries, and why it involves reading things several times!
<pjb> dwts: clhs is not a tutorial, it contains circular references.
<pjb> To understand it, you need to know it already.
<dwts> yeah, I've noticed that common-lisp(probably other dialects?) is very hard to find answers by googling...It's the first language that makes it so hard for me to find answers.
fikka has quit [Ping timeout: 240 seconds]
<basket> dwts: You can ask questions here, and a good tutorial style book would probably help you find your way around better
<hooman> hm i always find answers. its prolog that was hard, and sometimes ocaml
k-stz has joined #lisp
<dwts> basket: Yeah, that's why I end up asking here every couple hours or so...After searching endlessly google I end up here again.
<shaftoe> is there a case-like macro that I can use with strings, or specify the equal test?
<scymtym> shaftoe: alexandria:switch
<loke`> shaftoe: string-case on Quicklisp
fikka has joined #lisp
<loke`> it's faster than the alexandria version.
<dwts> basket: is "ansi common lisp" covering my needs ?
<shaftoe> thanks scymtym and loke
<basket> dwts: That's a good book, yes. Practical Common Lisp is another, and the latter is available legally for free online
<dwts> basket: I already own a hard copy of pcl. But I noticed that it's not good for "first" book
<dwts> hopefully ansi common lisp book can cover my "member-like" questions
<shaftoe> dwts: what do you think is missing from pcl ?
fikka has quit [Ping timeout: 255 seconds]
attila_lendvai has quit [Read error: Connection reset by peer]
<shaftoe> i probably refer to it multiple times each coding session
astronavt has joined #lisp
<shaftoe> i sparingly used land of lisp in the early days
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
fikka has joined #lisp
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
<dwts> shaftoe: I don't think it's "missing". My impression is -although great book, especially the macro chapter-, that it's not for beginners. It assumes a few things for the reader. For example, when I want to use member for the first time, I won't be using pcl to get an answer. In other languages you can get tons of books/links that document the standard. With common lisp I se that we are dependant on a
<dwts> not-so-fancy webpage.
<shaftoe> dwts: i learnt how to use member after seeing it in code :)
<shaftoe> within a class slot's :type form
<dwts> shaftoe: that's what I was hoping not to hear :P
<shaftoe> my attitude to lisp is "i can do anything, i just gotta figure out what command to use to do it"
<shaftoe> i see my challenge as learning the "stdlib"
<shaftoe> the lisp equivalent thereof
<beach> dwts: What reaction do you expect when you complain about Common Lisp documentation? That some of us will apologize? That we immediately rush to provide you with better documentation? Something else?
klltkr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<shaftoe> i can admit that i spent a few hours one weekend trying to figure out the name for "subseq", because i'd forgotten what it was called
<shaftoe> my google-fu failed me on that one
<dwts> beach: I don't expect any reaction. I just answered to a previous question on why I don't think that Peter Seibel's book is best for beginners. You don't have to take it personally. Do you think that the online documentation is good? Fine, we just disagree. Why would I want your apology on something that you are not responble for? I'm just stating my opinion
fikka has quit [Ping timeout: 248 seconds]
<shaftoe> dwts: it took me a few attempts to finally "get" into CL
<Shinmera> When I look for a CL standard function or feature I never turn to google because it just sucks. Instead I look and search through this list. http://www.lispworks.com/documentation/HyperSpec/Front/X_AllSym.htm
<shaftoe> several false starts
<basket> shaftoe: I would use APROPOS for that
<myrkraverk> I sometimes use SBCL's tab completion.
<shaftoe> basket: apropos what? i was searching for something like "lisp array from contents of vector" or variants there of
<beach> dwts: It would be way more helpful if you would contribute to make things better than to state your opinion.
<shaftoe> i was hunting for vector-related commands to track down subseq, that path didn't turn up subseq
<dwts> beach: sure. I can do that. To contribue I need to undestand, then, I need to read, read the doc, can't find my answer, then I end up here. :)
<myrkraverk> I have sbcl+linedit, which gives me good tab completion -- though slime's also works.
<shaftoe> myrkraverk: same here, love tab completion in sbcl
<shaftoe> gotta keep removing beep from terminal.lisp in linedit package
<dwts> I guess Ican contribute when I start comprehending some basic parts
<_death> dwts: there are many books about Common Lisp
<dwts> beach: do you have access to edit that page?
<myrkraverk> Which reminds me, I have a patch to linedit, so I can C-d to quit without it asking.
<beach> dwts: What page?
<myrkraverk> I should probably put that patch somewhere.
<dwts> beach: I'm not sure if "many" is an accurate word for common lisp books according to amazon search. I'm talking about the hyperspec page where you asked my contribution.
<myrkraverk> Ok, so I'm making a lisp binding for nspr (and probably later nss, but let's stick to this task at hand)
<Shinmera> The hyperspec is not editable. At least not if you want to distribute your edits.
<beach> dwts: The Common Lisp HyperSpec is owned by LispWorks and can not be edited. Furthermore, it is considered the definition of the standard, so it would be contrary to everything we know about standards to edit that page.
<myrkraverk> And the PR_GetHostByName() returns a "thing" I can walk through in a C loop, and for each "thing" I can create an address structure and set the port info.
<dwts> beach: by edit, I mean improve, not change the content.
<beach> dwts: But phoe is putting together the Common Lisp UltraSpec (CLUS) that does not have that problem.
<jackdaniel> annotations which point out inconsistencies wouldn't hurt though
<dwts> never heard of CLUS
<dwts> let me check
frgo has joined #lisp
<myrkraverk> Is it reasonable to just give the port number to the lisp version; let's call it (nspr-get-host-by-name "www.example.com" 80) and it returns a list of address objects with the port number set?
<beach> minion: Please tell dwts about CLUS.
<minion> dwts: please see CLUS: CLUS is the Common Lisp UlstraSpec, a modern and corrected specification of the Common Lisp language and related material. See http://phoe.tymoon.eu/clus for the current state of the project
<myrkraverk> (it's somewhat irrelevant that my current lisp binding is for xemacs -- later I plan to start the CL version)
eudoxia has joined #lisp
<dwts> beach: interesting. I just checked teh member page btw. It sure looks pretier than that hyperspec page.
<eudoxia> has anyone noticed a horrendous increase in Ironclad load time? or is it just my localhost?
milanj has joined #lisp
<_death> dwts: if I unload all books about Common Lisp into your hands, I doubt you'd still be standing.. I think that definition of "many" is accurate enough
frgo has quit [Ping timeout: 240 seconds]
<jackdaniel> eudoxia: load time or compilation time? it always compiled quite long on my system
<dwts> _death: If you are kind enough, I'm very interested not to be standing after getting an answer :)
<eudoxia> compilation I guess, I just installed it for the first time in this environment
<eudoxia> took multiple minutes
frgo has joined #lisp
<jackdaniel> well, not multiple minutes on my laptop, rather dozens of seconds
juki has quit [Quit: ERC (IRC client for Emacs 25.3.1)]
<eudoxia> hmm :/ I have a relatively beefy laptop and made sure I was running a certain SBCL, and it took a long ass time still
<eudoxia> weird
<jackdaniel> it happend a few times here, that during compilation of ironclad heap blew up and I ended in ldb
<jackdaniel> but if it loaded fine after several minutes, then that's not it
kolko has joined #lisp
attila_lendvai has quit [Ping timeout: 252 seconds]
frgo has quit [Ping timeout: 240 seconds]
ninegrid has joined #lisp
<scymtym> eudoxia: which SBCL is that? we recently made changes that should make ironclad compile quicker
<eudoxia> scymtym: 1.3.3.debian
<eudoxia> maybe not that recent...
<scymtym> eudoxia: the specific improvements i have in mind definitely came later
vibs29 has quit [Ping timeout: 240 seconds]
vibs29 has joined #lisp
epony has quit [Ping timeout: 240 seconds]
michalisko has quit [Ping timeout: 240 seconds]
frgo has joined #lisp
Josh_2 has joined #lisp
michalisko has joined #lisp
<drmeister> scymtym: You work on ironclad?
<drmeister> ironclad takes hours to build on Clasp - it's a problem for us. The functions get so large that llvm has trouble with them.
<beach> drmeister: What scymtym said was ambiguous, but I think he meant that he worked on SBCL.
klltkr has joined #lisp
<drmeister> llvm has an optimization phase that scales badly with function size - large functions generated by macroexpansion and inlining cause it a lot of trouble.
klltkr has quit [Client Quit]
<drmeister> Ah - I just woke up.
klltkr has joined #lisp
klltkr has quit [Client Quit]
fikka has joined #lisp
frgo has quit [Remote host closed the connection]
thinkpad has quit [Ping timeout: 248 seconds]
<jackdaniel> good morning then
<turkja> eudoxia: i've compiled recently ironclad on sbcl 1.2 - 1.4, takes long time to compile, well at least relatively speaking
cromachina has joined #lisp
hvxgr has joined #lisp
<scymtym> drmeister: beach is right. i optimized one of SBCL's register allocators which helps ironclad compilation
<eudoxia> turkja: ironclad has always been an outlier in this regard and I wouldn't be surprised if minor compiler changes caused a blowup in compile time
fikka has quit [Ping timeout: 260 seconds]
eudoxia has quit [Quit: Leaving]
<turkja> to be fair, i didn't notice any difference between sbcl-1.2 and latest version from github, it just took a relatively long time, like few minutes, i wasn't concerned
<jmercouris> What's the best way to split long strings in common lisp?
<jmercouris> Rephrased: What's your favorite way to split long strings in common lisp so the string isn't over 80 columns wide?
<Bike> if it's just fixed length you can use subseq
damke_ has quit [Ping timeout: 246 seconds]
<jmercouris> Bike: I mean within the source code itself
<jmercouris> E.g. let's say you have a long sql query
<Bike> oh. you can use format, i guess. there's a thing to make it ignore newlines.
<jmercouris> hmm ok, that could be something
<_death> jmercouris: could just use newlines, or a list of strings
<scymtym> for very long strings, consider #.(format nil "line1~@<newline>line2") where <newline> is a physical newline (can be followed by whitespace for indentation) in your source code
<turkja> yea, just saw that in cl+ssl sources
MonNov has joined #lisp
papachan has quit [Ping timeout: 260 seconds]
<scymtym> or "line1~<newline>line2" if the string literal should not contain a newline at that point
<jmercouris> I like the list of strings idea more than the format honestly
<jmercouris> maybe I'll make a macro for it or something
FreeBirdLjj has quit [Remote host closed the connection]
<jmercouris> I could even make it """ some multiline string """ so I can pretend I'm still programming python ;)
FreeBirdLjj has joined #lisp
fikka has joined #lisp
damke_ has joined #lisp
FreeBirdLjj has quit [Ping timeout: 260 seconds]
jstoddard has joined #lisp
<_death> in some project I have stuff like (e/l '("SELECT ..." "FROM posts" "WHERE user_id=?" "GROUP BY time") id).. e/l will build the query string in expansion time since it's a literal
neoncont_ has quit [Remote host closed the connection]
<jmercouris> _death: Would you mind sharing your code?
fikka has quit [Ping timeout: 240 seconds]
wooden has quit [Ping timeout: 240 seconds]
<_death> it's not really for public consumption.. but e/l is just a macro `(execute-to-list *db* (format-sql ,sql) ,@parameters) and format-sql is a function that does the formatting and has a compiler-macro that takes care of such literals
<_death> maybe I have something like it in the public already
cromachina has quit [Read error: Connection reset by peer]
<_death> ah, not really.. thought about https://github.com/death/gnusdumps/blob/master/store/sqlite.lisp but the queries there are too short to bother :)
fikka has joined #lisp
cromachina has joined #lisp
cromachina has quit [Read error: Connection reset by peer]
wooden has joined #lisp
<_death> the code is also abit cryptic I guess
cromachina has joined #lisp
<jmercouris> The macro is all i wanted to know, maybe there was something super clever in there :D
<jmercouris> the format-sql type facility is already provided by my sqlite lib
stnutt has left #lisp [#lisp]
fikka has quit [Ping timeout: 260 seconds]
astronavt has quit [Remote host closed the connection]
fikka has joined #lisp
cromachina has quit [Read error: Connection reset by peer]
cromachina has joined #lisp
cromachina has quit [Read error: Connection reset by peer]
cromachina has joined #lisp
scymtym has quit [Ping timeout: 240 seconds]
cromachina has quit [Read error: Connection reset by peer]
orivej has quit [Ping timeout: 255 seconds]
cromachina has joined #lisp
cromachina has quit [Read error: Connection reset by peer]
cromachina has joined #lisp
<_death> jmercouris: if the input to format-sql is a list, it just joins the string with " " separator
<_death> *strings
tloen has joined #lisp
<_death> it also removes nils, so you can conditionally include sql
cromachina has quit [Read error: Connection reset by peer]
<jmercouris> okay, very cool
sz0 has joined #lisp
trocado has joined #lisp
mn3m has joined #lisp
scymtym has joined #lisp
<jmercouris> in the following: https://imgur.com/a/xlEYS why does self become red when I split the with-slots in this way?
<_death> buggy highlighting
<jmercouris> It's infuriating
<_death> you could have self in its own line
<_death> that'd be less infuriating :)
<jackdaniel> actually its not buggy highlight
<jackdaniel> if you split second (or third, etc.) argument, and put next one after the first one
<jackdaniel> it gets highlighted
<jmercouris> I see, so I should be putting it on a newline?
<jackdaniel> yes
<jmercouris> It looks so bad though
<jmercouris> Well, such is life I guess :D
<jmercouris> I can see the rationale behind it though
<jackdaniel> you have buggy indent on the other hand, slots in with-slots macro should be aligned, because first argument is not evaluated
ryanwatk` has quit [Read error: Connection reset by peer]
<jmercouris> I can't help it C-i pushes it there
ryanwatk` has joined #lisp
<jmercouris> I guess I'll just manually change it
<_death> jackdaniel: yeah in this case I guess the highlighting is justified for reason of style
<jmercouris> So should look like this, right: https://imgur.com/a/fGgch?
<_death> jmercouris: that way lies madness.. just keep it as your editor indents
<jackdaniel> yes, that looks fine
<jackdaniel> you may try trivial-indent library
<_death> jmercouris: if bothered, fix the indent code
<jackdaniel> (didn't use it yet myself, but I've heard good things about it)
<jmercouris> _death: I'll make an exception for this indent, it's literally the only time
<_death> jackdaniel: it's with-slots, so the indentation rule should already be in slime
<jmercouris> I don't M-q on all my functions every two seconds anywauy, I think i'll be okay
<jackdaniel> _death: as experience shows, many things which should be in software aren't
<jackdaniel> but I'm sure luis will accept pull request if someone fixes it :)
eudoxia has joined #lisp
<drmeister> scymtym: Thank you.
<drmeister> scymtym: Were you optimizing the register allocator to generally improve sbcl's compiler - or were you targeting on improving ironclad compilation specifically somehow?
ryanwatk` has quit [Read error: Connection reset by peer]
ryanwatk` has joined #lisp
yurichev has joined #lisp
<_death> btw it seems weitz.de is down
trocado has quit [Ping timeout: 248 seconds]
wooden_ has joined #lisp
wooden has quit [Read error: Connection reset by peer]
epony has joined #lisp
jstoddard has quit [Read error: Connection reset by peer]
jstoddard has joined #lisp
pjb has quit [Ping timeout: 240 seconds]
astronavt has joined #lisp
pjb has joined #lisp
Khisanth has quit [Ping timeout: 240 seconds]
pjb has quit [Remote host closed the connection]
nullniverse has joined #lisp
orivej has joined #lisp
SaganMan has quit [Quit: WeeChat 1.6]
jstoddard has quit [Quit: ERC (IRC client for Emacs 25.2.1)]
turkja has quit [Ping timeout: 260 seconds]
neoncontrails has joined #lisp
zmt00 has joined #lisp
jstoddard has joined #lisp
tfeb has quit [Remote host closed the connection]
tfeb has joined #lisp
eudoxia has quit [Read error: Connection reset by peer]
eudoxia has joined #lisp
tfeb has quit [Ping timeout: 255 seconds]
eudoxia has quit [Client Quit]
<Shinmera> Sunday evening lisp chill stream for those with nothing else to do starting shortly: http://stream.shinmera.com/#
damke has joined #lisp
moei has quit [Read error: Connection reset by peer]
moei has joined #lisp
damke_ has quit [Ping timeout: 240 seconds]
Khisanth has joined #lisp
knobo has joined #lisp
EvW has joined #lisp
<jmercouris> Anyone interested in beta testing software for me and reporting errors?
<jmercouris> OSX only
jstoddard has quit [Remote host closed the connection]
safe has joined #lisp
python476 has joined #lisp
tfeb has joined #lisp
moei has quit [Read error: Connection reset by peer]
TCZ has joined #lisp
neoncontrails has quit []
wigust has quit [Ping timeout: 264 seconds]
tfeb has quit [Remote host closed the connection]
tfeb has joined #lisp
tfeb has quit [Remote host closed the connection]
Arcaelyx_ has joined #lisp
tfeb has joined #lisp
tfeb has quit [Remote host closed the connection]
safe has quit [Read error: Connection reset by peer]
Arcaelyx has quit [Ping timeout: 250 seconds]
trocado has joined #lisp
<hooman> Shinmera, ouu, checks!
neoncontrails has joined #lisp
<drmeister> What are "octets" in Babel? As in BABEL:STRING-TO-OCTETS
rpg has joined #lisp
<drmeister> They are 8-bit bytes?
tfeb has joined #lisp
<hooman> hm octal is eight
angavrilov has quit [Remote host closed the connection]
<drmeister> hooman: I'm hip to eight. I just wanted to make absolute sure of what I'm working with here.
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
tfeb has quit [Ping timeout: 268 seconds]
<drmeister> In my day we called those "bytes" and we were happy about it.
* drmeister learned his computing in the streets.
fikka has quit [Ping timeout: 248 seconds]
nullniverse has quit [Quit: Leaving]
<aeth> They're (unsigned-byte 8)s
<aeth> Back in the day, they were called (UNSIGNED-BYTE 8)s
<Bike> back in my day we called them octuple relays
sjl__ has quit [Quit: WeeChat 1.9.1]
mson has joined #lisp
Tobbi has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<myrkraverk> For long strings, I use (defmacro concat (&rest strings) `(concatenate 'string ,@strings))
<myrkraverk> From [x]emacs lisp.
TCZ has quit [Quit: Leaving]
<aeth> xemacs is a name I haven't heard in a long time
<myrkraverk> and probably, though I have no proof, originated in maclisp.
<aeth> Does the basic CL workflow still work on xemacs? I guess these days it'd be SLIME+paredit+magit
tloen has quit [Quit: Leaving]
<myrkraverk> I'm am one of two remaining xemacs users.
<myrkraverk> aeth: I had a working slime until recently, when I updated SBCL.
<myrkraverk> So I have to at least cherry pick one (for me) future patch.
<rpg> I remember a few years ago I tossed in the towel when Yegge said to give up on Xemacs. Until then I was using it pretty successfully
<myrkraverk> Who is Yegge? And why is his/her opinion important?
<myrkraverk> Personally, I just try to support myself on xemacs.
<myrkraverk> The problem I'm having, is that the easy bugs have been fixed years ago.
<rpg> Steve Yegge, who did a lot of work on it.
<hooman> i thought.. hey is xemacs still a thing ? thats what i first used decades ago
trocado has quit [Read error: Connection reset by peer]
<myrkraverk> I still use some xemacs only features, so I just support myself.
<aeth> GNU Emacs added an integerated clipboard at some point in the last 6 or 7 years iirc. Very useful to be able to paste into IRC or a terminal or Firefox. It completely changed how I used Emacs and I almost always use Emacs outside of the terminal now because of that (and better syntax highlighting outside of the terminal)
<rpg> myrkraverk: Just curious -- what features are these?
<aeth> Does XEmacs have that? I know XEmacs has a package manager, which GNU Emacs added only a few releases ago
Tobbi has joined #lisp
<myrkraverk> rpg: gutters, emodules mostly -- internal stuff.
orivej has quit [Read error: Connection reset by peer]
<rpg> oh, I see.
<myrkraverk> aeth: xemacs has on option to toggle integration with the x clipboard, which (on os x) is integrated into the rest of the os.
<aeth> interesting
<aeth> It's interesting how xemacs, essentially abandoned almost a decade ago, has lots of little quality of life things only recently added to Emacs
<myrkraverk> yeah.
<aeth> Although, idk, maybe GNU Emacs had clipboard integration as an option and made it a default, idk
Rawriful has quit [Quit: WeeChat 1.4]
<rpg> TBQH, although true believers don't like it, I've been very happy with Aquamacs on MacOS.
orivej has joined #lisp
eSVG has joined #lisp
ryanwatk` has quit [Ping timeout: 240 seconds]
vlatkoB has quit [Remote host closed the connection]
fikka has joined #lisp
<jmercouris> The reason GNU emacs doesn't add these featuers is because of an unreasonable bias against MacOS
<hooman> that is quite specific ...
fikka has quit [Ping timeout: 276 seconds]
<jmercouris> you'll see it all the time, for example emacs process manager only worked on Linux, and for a long time
<jmercouris> why is that exactly? coincidence?
<aeth> It's not an unreasonable bias: it's GNU Emacs, made for GNU.
<aeth> Every other platform will be a second class citizen
<hooman> i dont see it. GNU emacs has a ton of mac specific stuff
sjl___ has joined #lisp
fikka has joined #lisp
smurfrobot has quit [Ping timeout: 240 seconds]
<jmercouris> hooman: Sure it does, but way way way way way later than it should
<jmercouris> who am I to say "should" though, all I'm saying is that they almost intentionally avoid implementing OSX specific things, just feels that way
<jmercouris> aeth: nailed it
sjl___ has quit [Ping timeout: 248 seconds]
<hooman> well. osx has a lot of specific things
<hooman> its not like we cant say that apple has an agenda too
<hooman> if one side pushes, the other side is pulling; displacement =)
<jmercouris> hooman: Nobody said they didn't, we have to be careful about whataboutism
<aeth> hooman: Yes, it's just that GNU is the third (counting Microsoft, too) agenda pusher
<hooman> i like to think the software dev world as a whole is in Friendly Adversarial Competition mode, to inspired each other toward greatness
<jmercouris> That's a really positive outlook, I like it!
<hooman> aeth, i think there are actual companies involved.. like Oreilly, red hat, oracle, sun, google, ....
<jmercouris> GNU, the OS that never was but kind of is
<hooman> not many tech companies are not into OSS in some form
<aeth> hooman: But GNU Emacs makes sense when you view GNU just like the FOSS Microsoft.
<jmercouris> hooman: Define "into", I think most tech companies are using open source software for at least something
<hooman> aeth, killer app? =)
<aeth> hooman: Microsoft Office on OS X is never going to be as good as Microsoft Office on Windows, for the same reason as GNU Emacs
<hooman> jmercouris, yes, "using"
<hooman> ah, that is true, at least by accepted side effect
<hooman> emacs is terrible on windows
<hooman> watch it render the chars
<aeth> I personally think that the Lisp community's reliance on GNU Emacs is a mistake. GNU wants to push what they call GNU/Linux. The Lisp community wants to push Common Lisp. These are opposing goals, since the CL goal is OS-independent.
<aeth> If I used Windows, I would be much less likely to use CL.
dieggsy has joined #lisp
<hooman> hmm. isnt "gnu os" to get free nice tools everywhere, kind of portable by concept ?
<hooman> platform independant is a fairly big gnu thing
<aeth> If anything, the popularity of Lisp in spite of the bad Windows development experience just shows how irrelevant Windows is to most developers in 2017.
<hooman> i may have never even seen lisp or much after C++ if i never left windows
<aeth> hooman: GNU apps are portable across Unix, but work best in a GNU environment. So this means you'll get a worse experience in FreeBSD or Mac OS and a dreadful experience in Windows
<hooman> probably would have went from c++ to .net, then c#, then back to c++ =P
<hooman> oh yeah. well its mitigated by us having put gnu environments everywhere anyway ~
<hooman> and well now microsoft has one with the linux subsystem for windows
<aeth> Windows is emulating the Linux kernel to try to get a passable Linux dev experience, but only the shell-based ones. Proper Emacs is graphical.
<aeth> You get much better syntax highlighting, an integrated clipboard, and even some features that aren't available in the terminal version, like PDF reading.
<aeth> And, besides, all Windows terminals are terrible.
yurichev has quit [Quit: leaving]
<hooman> an for any non-gnu full os: worse text =)
<hooman> and+ (i would like to add)
<hooman> and well. for common lisp, not sure what else we can do then. McCLIM
* |3b| has no problems with sbcl+msys2/mingw64+gnu emacs on windows
<hooman> GNUstep was getting somewhere
<hooman> |3b|, same =) aside from rendering display. i have emacs from git on my windows 8.1 tablet
jfb4 has quit [Ping timeout: 240 seconds]
<hooman> and it runs great, except perhaps, svg, i cant remember; there was one thing i could not get working.
<aeth> hooman: McCLIM is LGPL, so not everyone is going to get behind it. Afaik a lot of people in the Lisp community want to produce single-binary apps. Following the LGPL would require keeping the McCLIM fasl(s) separate.
jfb4 has joined #lisp
<hooman> oh geez, thats kind of serious eh
<aeth> Afaik, though, the LPGL is otherwise valid on Lisp. Don't use the LLPGL ever.
<hooman> because its working quite well, McCLIM, reminds me of the early days of GNUstep
marvin2 has joined #lisp
<hooman> LPGL or LGPL ?
* hooman dyslexia overload
marvin2 has left #lisp [#lisp]
<hooman> javascript `-`
<aeth> LLGPL is some custom license (red flag right there) that adds a bunch of clarifications to the LGPL.
<aeth> The official FSF/GNU stance is: "the LGPL works as intended with all known programming languages". https://www.gnu.org/licenses/lgpl-java.html
<aeth> As intended, though, I think means shipping the libraries separately from the application.
<aeth> Well, separate files
<aeth> Files you can replace, which the license permits you to do
<hooman> o_O so no fasl ? as in native bins ?
<hooman> what about javascript then
<aeth> JavaScript generally doesn't use LGPL because JavaScript, at least on the browser, tends to distribute everything in one or more minified source files, all mixed together.
<aeth> Often just one
<aeth> hooman: I'm not a lawyer, but I'm under the impression that you can use an LGPL Lisp library, as long as the FASL is separate and replacable. You can't compile it into a unified, all-in-one executable.
<hooman> seperate files is not so concrete i think
<hooman> ohhh now i see what ur saying
<aeth> I think someone would have to message the FSF for clarification.
<rpg> aeth: LLGPL was developed by Franz specifically for distributing lisp programs
<hooman> so... got to hijack and take over GNU common lisp, then make it a bit more like how GNU smalltalk is to other smalltalk implementations.
<hooman> o_O
<aeth> rpg: And now there are two licenses, with potentially two different ways of complying with them.
<aeth> And since both are copyleft and separate copyleft licenses, they're incompatible with each other afaik.
<aeth> But, again, you' dhave to message the FSF for clarification
thebardian has joined #lisp
<rpg> I thought LLGPL was specifically phrased as a modification to the terms of the LGPL, but I would have to check.
<aeth> It's a preamble of "clarifications"
<hooman> hmm. we need a GNU license compiler type cheker
<aeth> But the result is, almost certainly, a different license with a different way to comply
<hooman> +c
<hooman> i mean LicenseCompiler (by GNUtm)
<hooman> surely there is enough patterns in the language of licenses to say, render a freaking diagram or some source code to understand the logical states and cases of it.
<aeth> The FSF interpretation of the LGPL to CL is almost certainly going to be different than what the LLGPL clarifications provide. It's a legal mess that needs a lwayer to analyze it imo.
<hooman> instead of chapters of english poop
<hooman> my idea is to make free GNU lawyer software. not really I but certainly A
<hooman> amirite? =/
<aeth> My approach is just to use the MIT license, and only MIT or BSD licensed dependencies, and just dare someone to keep up with a proprietary fork if they choose. Since it's a proprietary fork, they'll have to keep up with all my patches, including patches that could potentially introduce things with the same name and different API.
<aeth> (In fact, I would be tempted to do so if I found out about such a proprietary fork. Good luck.)
djinni`_ has quit [Quit: Leaving]
<jmercouris> aeth: So you're saying we can motivate you to write more free software by just forking, compiling, and publishing your products online :D?
<aeth> No company is going to keep up a proprietary fork of a library through all the patches, etc. They're using the library because they're lazy and don't want the maintenance nightmare in the first place.
<jmercouris> Unless of course the create a spin-off company selling your library which they modify
<aeth> It's possible they'll fork it for some one-off and never update their software, but now they just gave their customers a security nightmare.
<aeth> I think that's far more likely then selling a modified version
<jmercouris> Any suggestion on how to introduce a "package" system to my application?
<jmercouris> I want users to be able to install software from some central repository, the software is all lisp of course
<jmercouris> I want to create something like emacs packages for my application
<jmercouris> Which mechanisms could I use?
random-nick has quit [Remote host closed the connection]
lnostdal has joined #lisp
<aeth> jmercouris: The absolute laziest mechanism would be to just dump them all in ~/quicklisp/local-projects
<aeth> I believe the slightly less lazy method is to make a new asdf:system-source-directory
djinni` has joined #lisp
<aeth> I'm not sure where that goes because I've never had to do that before
<aeth> asdf:*central-registry*
<jmercouris> so then I'd just quickload em in my system?
<jmercouris> s/system/application
<jmercouris> Hmm, that is a very lazy approach indeed, could be worthwhile for a proof of concept/alpha
vibs29 has quit [Ping timeout: 240 seconds]
<aeth> jmercouris: learning how to properly use asdf:load-system is the correct way, relying on quickload would be a quick and hacky proof of concept way
<aeth> Or, actually, maybe you should quickload them no matter what, so they can use external QL dependencies.
djinni` has quit [Client Quit]
vibs29 has joined #lisp
<aeth> In that case, you'd want to put them in another directory in this list: ql:*local-project-directories*
<aeth> You'd have to do name verification, though, because they'd be able to override a common library (e.g. cl-ppcre) with whatever they wanted
djinni` has joined #lisp
kmb has joined #lisp
Jesin has joined #lisp
Guest81424 has quit [Remote host closed the connection]
Guest81424 has joined #lisp
kmb has quit [Client Quit]
klltkr has joined #lisp
vancan1ty has quit [Ping timeout: 250 seconds]
dieggsy has quit [Remote host closed the connection]
<dwts> hey guys, is the % in front of a function definition declaring something special? I'm reading the definitoin of %coerce-callable-to-fun which I met while reading the definition of member...
Baggers has joined #lisp
<Bike> no, it's just slang for "internal"
<|3b|> doesn't mean anything to the lisp implementation, but to human readers it more or less means "something special"
<|3b|> ("special" as in "internal", "dangerous", etc, depending on the author)
<dwts> hmm
<dwts> okay
mishoo__ has quit [Ping timeout: 260 seconds]
shka has quit [Ping timeout: 240 seconds]
<mfiano> It is usually used to signify a user should not use it in their codes, and it is very internal. It's probably a good idea to do the same, such as all class slots prefixed with it.
mn3m_ has joined #lisp
<mfiano> Remember, CL doesn't offer any protection facilities, so it mainly serves as a note to other people to not touch it.
smurfrobot has joined #lisp
mn3m has quit [Ping timeout: 240 seconds]
<basket> Are there any other widely followed naming convetions aside from *special* +constant+ and %internal ?
<basket> And I guess -p
<basket> I'm just thinking
moei has joined #lisp
<Shinmera> Uh, I guess dots for simulating domains in package names?
<Shinmera> Dunno how wide that is but some do it
<dwts> mfiano: understood. Thanks a lot. I didn't have intentions to use it, I was trying to figure out some details on how member works to be honest.
Amplituhedron has joined #lisp
<|3b|> not sure i'd say "should not use" so much as "should know what the non-% alternative is and what the differences are before using it". if it wasn't exported you shouldn't be using it % or otherwise, and if it is exported with %, it is probably meant to be used, just with some restrictions of some sort
<Shinmera> I use % for stuff that's closely associated to another function and doesn't really have any meaning outside of that one use-case
jfb4 has quit [Ping timeout: 248 seconds]
<basket> I don't think I would ever export a % function
* |3b| frequently uses % for FFI functions (or whole packages of them), where the non-% version hides the FFI at the possible expense of performance
<|3b|> or for a 'fast path' function that assumes some invariant has already been checked
<Shinmera> I use separate packages for that.
jfb4 has joined #lisp
<Shinmera> a -ffi package for the CFFI stuff and another for the high-level interface
<|3b|> yeah, i usually only end up with %foo ffi functions for small libs or where most of the functions can be called directly
klltkr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
klltkr has joined #lisp
klltkr has quit [Client Quit]
klltkr has joined #lisp
klltkr has quit [Client Quit]
rumbler31 has quit [Remote host closed the connection]
p1n34ppl3 has joined #lisp
mn3m__ has joined #lisp
mn3m__ has quit [Client Quit]
mn3m_ has quit [Ping timeout: 240 seconds]
wxie has joined #lisp
<dwts> mfiano: nice link
Ven has joined #lisp
Ven is now known as Guest21319
papachan has joined #lisp
nowhereman_ has joined #lisp
losira has joined #lisp
wxie has quit [Quit: Bye.]
Karl_Dscc has quit [Remote host closed the connection]
losira has left #lisp [#lisp]
<basket> mfiano: Not sure if I've ever seen <foo<
nowhereman_ has quit [Ping timeout: 268 seconds]
pok has quit [Ping timeout: 240 seconds]
pok has joined #lisp
damke_ has joined #lisp
thinkpad has joined #lisp
QualityAddict has quit [Ping timeout: 268 seconds]
<mfiano> heh neither have i
<mfiano> that was written a long time ago though
<aeth> It's confusing that %foo is both internal and low-level, since I use both and I'm sure any large enough project does
damke has quit [Ping timeout: 240 seconds]
QualityAddict has joined #lisp
<aeth> It's no problem to use %foo if it's just a faster foo, as long as you know why it's faster and work around it. Perhaps %foo assumes without checking that it's never going to get a 0 or something.
pseudonymous has quit [Ping timeout: 268 seconds]
pierpa has joined #lisp
Kaisyu has joined #lisp
pjb has joined #lisp
Jesin has quit [Quit: Leaving]
nowhereman_ has joined #lisp
knobo has quit [Read error: No route to host]
python476 has quit [Ping timeout: 240 seconds]