p_l 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/> | ASDF 3.3.4
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
yankM has joined #lisp
buffergn0me has quit [Ping timeout: 244 seconds]
buffergn0me has joined #lisp
jonatack_ has quit [Quit: jonatack_]
jonatack has joined #lisp
gko has joined #lisp
sjl_ has quit [Ping timeout: 258 seconds]
rgherdt has quit [Ping timeout: 272 seconds]
Necktwi_ has joined #lisp
Nilby has joined #lisp
Necktwi has quit [Ping timeout: 240 seconds]
v88m has joined #lisp
zaquest has quit [Quit: Leaving]
Lord_of_Life has quit [Read error: Connection reset by peer]
jruiz has joined #lisp
zaquest has joined #lisp
Lord_of_Life has joined #lisp
ahungry has joined #lisp
SGASAU has quit [Remote host closed the connection]
jonatack has quit [Ping timeout: 246 seconds]
SGASAU has joined #lisp
gko has quit [Ping timeout: 260 seconds]
bitmapper has quit [Ping timeout: 272 seconds]
wxie has quit [Ping timeout: 256 seconds]
rand_t has quit [Quit: rand_t]
azureBlob has quit [Remote host closed the connection]
yitzi has quit [Quit: yitzi]
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
shifty has joined #lisp
rpg has joined #lisp
gelatram has quit [Ping timeout: 245 seconds]
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
rpg has quit [Quit: Textual IRC Client: www.textualapp.com]
buffergn0me has quit [Ping timeout: 244 seconds]
buffergn0me has joined #lisp
parjanya has joined #lisp
toorevitimirp has joined #lisp
Codaraxis has quit [Read error: Connection reset by peer]
dddddd has quit [Ping timeout: 246 seconds]
shangul has joined #lisp
wxie has joined #lisp
jruiz has quit [Ping timeout: 256 seconds]
jruiz has joined #lisp
jruiz has quit [Ping timeout: 256 seconds]
turona has quit [Ping timeout: 272 seconds]
karayan has joined #lisp
turona has joined #lisp
karlosz has quit [Quit: karlosz]
niceplace has quit [Ping timeout: 256 seconds]
niceplaces has joined #lisp
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
jruiz has joined #lisp
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
jruiz has quit [Ping timeout: 264 seconds]
lalilulelo has joined #lisp
<beach> Good morning everyone!
toorevitimirp has quit [Ping timeout: 260 seconds]
<beach> phoe: Congratulations! Yes, two weeks will be fine.
rwcom3417 has joined #lisp
Oladon has quit [Quit: Leaving.]
wxie has quit [Ping timeout: 246 seconds]
jeosol has quit [Remote host closed the connection]
pfdietz has quit [Remote host closed the connection]
mrcom has quit [Read error: Connection reset by peer]
SGASAU has quit [Remote host closed the connection]
SGASAU` has joined #lisp
Necktwi_ has quit [Ping timeout: 272 seconds]
Bike has quit [Quit: leaving]
rwcom3417 has quit [Quit: Ping timeout (120 seconds)]
rwcom3417 has joined #lisp
SGASAU` has quit [Quit: ERC (IRC client for Emacs 26.3)]
madage has joined #lisp
SGASAU has joined #lisp
lxbarbosa has quit [Ping timeout: 265 seconds]
Necktwi has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU` has joined #lisp
jeosol has joined #lisp
zulu-inuoe_ has joined #lisp
zulu-inuoe has quit [Ping timeout: 260 seconds]
sstc has quit [Quit: WeeChat 2.8]
jruiz has joined #lisp
jruiz has quit [Ping timeout: 272 seconds]
Oladon has joined #lisp
lalilulelo has quit [Quit: Leaving]
sbodin has joined #lisp
gravicappa has joined #lisp
ahungry has quit [Remote host closed the connection]
karlosz has joined #lisp
sauvin has joined #lisp
buffergn0me has quit [Quit: ERC (IRC client for Emacs 26.2)]
v88m has quit [Remote host closed the connection]
rwcom3417 has quit [Ping timeout: 240 seconds]
rwcom3417 has joined #lisp
SGASAU has joined #lisp
<phoe> beach: thanks.
<phoe> Also good morning
SGASAU` has quit [Ping timeout: 256 seconds]
narimiran has joined #lisp
<no-defun-allowed> Hello phoe
Cymew has joined #lisp
stepnem_ has joined #lisp
sdumi has quit [Ping timeout: 256 seconds]
SGASAU has quit [Remote host closed the connection]
stepnem has quit [Ping timeout: 272 seconds]
<beach> Hello phoe.
Cymew has quit [Client Quit]
Cymew has joined #lisp
SGASAU has joined #lisp
sdumi has joined #lisp
Oladon has quit [Quit: Leaving.]
JohnMS_WORK has joined #lisp
wxie has joined #lisp
quazimodo has quit [Ping timeout: 246 seconds]
quazimodo has joined #lisp
pve has joined #lisp
<beach> phoe: Can you please give me the link again?
<beach> I may have found it. Is it the conditions.md file?
<boeg> morning
<beach> Hello boeg.
* ober notes asking lw/acl questions here is like when you go into the apple store, and ask for the "black shirt business account reps" and they hustle you off to the side out of view of the public to give you real service.
<ober> that being said is there a portable method for exit-hooks for say lw?
<no-defun-allowed> https://github.com/ailisp/exit-hooks supports roughly everything other than LispWorks.
<beach> The reason for that reaction is that freenode is geared toward free software, and if you have acquired a commercial implementation, you are better off asking their customer support, since most people here probably use a FLOSS implementation.
<beach>
<boeg> I'm looking at a manual saying that slime has a command (prefix with ,) called load-system that should, as far as I can see, do what manual quickloading does, but wihtout typing as many characters, though it doesn't seem like my slime has it. Is there such a command, or is the manual i'm looking at wrong?
<beach> There is such a command.
<beach> Are you in the REPL buffer?
<beach> It may not invoke quickload though, perhaps just ASDF.
<boeg> i'm in slime yes, if i type ",", sayonara and restart-inferior-lisp and so on appears
<no-defun-allowed> If you have the slime-asdf contrib, then ,load-system should work.
<Shinmera> the contribs should just all be loaded by default these days
<ober> beach: freenode rules state the "free" programs use ##
<no-defun-allowed> I can't disagree with Shinmera.
<ober> plus let's face it, this channel was here before Rob decided to create freenode
<beach> ober: I am only explaining your observation.
<boeg> no-defun-allowed, Shinmera: only thing that appears if i type ",loa" is "compile-and-load"
<no-defun-allowed> (My .emacs has (slime-setup '(slime-fancy slime-fancy-inspector slime-indentation slime-tramp slime-asdf)))
<boeg> maybe i'm missing something, ill check
<boeg> i have no slime setup ...
<boeg> just installed slime and went on my way i guess
<ober> original title in this channel was for lw :P
<Shinmera> Things can change? Perish the thought!
<ober> like with clhs?
<ober> not all us are lucky enough to use sbcl at work
<no-defun-allowed> What implementation do you use then?
<no-defun-allowed> If it's a commercial implementation, then don't you have other support channels?
<boeg> no-defun-allowed, Shinmera: yes, i needed that slime-asdf it seems, now i have the load-system although it cannot find my project, i guess it doesnt look in the quicklisp/local-projects dir :)
<ober> no-defun-allowed: yeah exit-hooks is what I was trying to use, no luck finding an analogue to it in lw.
<beach> ober: I don't understand your point. Do you want people here to start learning about LispWorks so that they can help people like you?
<ober> beach: nope. I just know there are some out there that do, and perhaps may know..
<ober> some folks still use the older lisps
<phoe> beach: yes, I've also sent you an invitation to a Git repository where more work happens.
<White_Flame> ober: actually, it's the other way around. # is for free projects, ## is for general topics
<White_Flame> technically, #lisp is a bit off in that sense
<boeg> seems i manually have to (asdf:load-path ...) before i can find my project with ,load-system. Is there a way to tell asdf about my project so I don't have to manually do it?
<White_Flame> although one could make a defense for the conglomeration of free, interoperable, standard projects
<phoe> boeg: where is your project located?
<ober> just fixing the endless Package "SB-EXT" not found. common among ql projects :P
<boeg> i have it in my project directory, and i have a symlink in my quicklisp/local-projects dir
<boeg> phoe: ^
<phoe> boeg: huh, it should find it without issues if it's available in local-projects
<boeg> hmm
<jdz> Assuming quicklisp is loaded.
<ober> beach: sorry I was not trying to come off as a troll, merely posting the preamble prior to trying to reach out to those few who do use it.
<boeg> phoe: it doesnt, not before i manually do asdf:load-path. But it is found by quicklisp, I can easily do (ql:quickload :mysystem)
<boeg> i guess something is awry
froggey has quit [Ping timeout: 256 seconds]
marcoxa has joined #lisp
<Fare> I had an interesting bug: registering all present ASDF systems as immutable, I could not dump an image for the topmost one anymore, because the immutability was marking the image dumping as a forced-not operation.
ayuce has joined #lisp
<ober> hey Fare
<boeg> So does anyone have an idea how to find out what is wrong? I have a symlink to my project in ~/quicklisp/local-projects, and i can (ql:quickload :my-project) but I cannot ,load-system it in slime before I manually (asdf:load-path "full/path/to/my/projects/asd")
froggey has joined #lisp
random-nick has joined #lisp
amerlyq has joined #lisp
<jackdaniel> a symlink?
<jackdaniel> missing ql:register-local-projects?
<boeg> jackdaniel: a symbolic link, i believe its called
<boeg> i can try, but if that was a problem, how would quickload be able to find it by just providing the symbol of the system (ie :system-name) ?
<jackdaniel> asdf looks for asd files with the same name as the primary system name
<jackdaniel> that is part before "/"
<jackdaniel> i.e system-name.asd
<jackdaniel> where it looks for them is a) configured, b) programmed with hooks, c) [deprecated] pushed to the central registry
<boeg> yes - what happens is that if i open a new slime, ,load-system doesn't find my project, but if i then (asdf:load-asd "/Users/cb/Projects/next/next.asd"), then ,load-system can find it. And in ~/quicklisp/local-projects I have a symlink: next -> /Users/cb/Projects/next and I can always load the system with (ql:quickload :next), even without asdf:load-asd it
<jackdaniel> afaik ql does the b) variant
<jackdaniel> because a) load-asd is explicit action for defining the system
<boeg> alright, it just sounded from what phoe said, that if ql:quickload can find it, ,load-system should be able to too
<jackdaniel> b) local projects is programmed to look in there for not defined systems
<boeg> indeed
<boeg> so is there a way to tell ,load-system to look somewhere too?
Zakkor has joined #lisp
<jackdaniel> when you addyes
<jackdaniel> look at asdf doc
<jackdaniel> conf file or registry
<beach> phoe: I accepted your invitation. How do you want me to communicate my remarks to you?
<boeg> jackdaniel: ah, yes, thanks, seems ~/common-lisp is a location
rgherdt has joined #lisp
<phoe> beach: GitHub issues preferably
SGASAU` has joined #lisp
<beach> phoe: Perfect.
<phoe> beach: thanks!
<beach> phoe: One issue per remark, or is a more course granularity acceptable?
efm has quit [Ping timeout: 246 seconds]
<phoe> beach: any way you prefer. You can also create a branch on the repo and submit fixes by PRs.
<beach> That would be too much work for me.
<phoe> Issues might be better though now that we have multiple reviewers
<phoe> Good - just issues are fine
shifty has quit [Remote host closed the connection]
shifty has joined #lisp
SGASAU has quit [Ping timeout: 246 seconds]
ArthurStrong has quit [Read error: Connection reset by peer]
<Fare> boeg: unlike ~/quicklisp/local-projects/, ~/common-lisp/ is pre-configured in ASDF and has been since 3.1.2 (2015?)
<Fare> Actually, 2014.
jonatack has joined #lisp
<boeg> Fare: yeah, i ended up pushing ~/common-lisp to ql:*local-project-directories* in my .sbclrc and move my symlinks there
<boeg> seems to have made it so that now its all available to both asdf and quicklisp
<boeg> its weird that its not by default ...
<Fare> I have negative credence to Xach, but maybe *you* can convince him.
<axion> Just bear in mind the Quicklisp's local projects will not automatically pick up sub-directories. You must use register-local-projects manually for that.
<boeg> good to know
<axion> Depending on how you set up your symlinks, everything could be a sub-directory.
<axion> The functionality is explained in the comment here: https://github.com/quicklisp/quicklisp-client/blob/master/quicklisp/local-projects.lisp
<boeg> good to know
<boeg> thanks :)
marcoxa has quit [Ping timeout: 264 seconds]
<jackdaniel> who would have thought that cl-pro mailing list will have ads for a gerbil scheme ^^
<axion> Who would have thought it would get activity this year?
<jackdaniel> true :)
yankM has quit [Ping timeout: 256 seconds]
rwcom34174 has joined #lisp
rwcom3417 has quit [Ping timeout: 256 seconds]
<Nilby> who would have thought that define-syntax is an easy way to do macros?
doomlist3 has joined #lisp
<doomlist3> hi
<doomlist3> https://bpaste.net/LDKA it seems the variables are not ggetting update, so what's the cmd to delete a variable to unload it from memory
<phoe> doomlist3: none
<phoe> you do not manage memory in Lisp, the system does it for you
<phoe> also, you seem to be misunderstanding DEFVAR
<Fare> sometimes you do manage it, and the system gets in the way. But that's rare
Bourne` has quit [Remote host closed the connection]
<phoe> Fare: that's edge cases, nothing for a beginner to worry about
<jackdaniel> uninterning symbol may lead to garbage collection if there are no other references
Bourne has joined #lisp
<phoe> doomlist3: if the variable is already set, then DEFVAR will not overwrite it with the new value
<phoe> you want to either SETF the variable if it's already established or use DEFPARAMETER that will always overwrite the value
<doomlist3> phoe: so defvar is bad
shangul has quit [Quit: bye!]
v88m has joined #lisp
<axion> No, defvar is quite useful
SGASAU` has quit [Remote host closed the connection]
<phoe> doomlist3: no, it's useful, you're just using the wrong tool
SGASAU` has joined #lisp
<phoe> DEFVAR is for cases where you don't want your variable to get overwritten when you reevaluate a file
<phoe> which happens surprisingly often in a Lisp programming model
<axion> It's also useful when you don't want a root binding for the special.
<doomlist3> one more doubt- i did (setf *newvar* "hi") and *newvar* got set and defined.
<doomlist3> even though it wasn't predefined.
orivej has quit [Quit: No Ping reply in 180 seconds.]
<axion> That is implementation defined behavior. SBCL will warn in that case.
<phoe> it's effectively undefined behaviour
<doomlist3> axion: I said undefined variable, but set it anyway in sbcl
<phoe> yes, it's undefined behaviour
orivej has joined #lisp
<axion> That is fine, SBCL allows that. But it is effectively undefined behavior.
<phoe> SBCL does it so pre-ANSI CL code keeps on working
v88m has quit [Ping timeout: 260 seconds]
<phoe> older lisps didn't use DEFVAR or DEFPARAMETER and just set symbols like that using toplevel SETF or SETQ
<doomlist3> clhs setq
<phoe> but you don't need to worry about SETQ for now either
<axion> (or ever)
<phoe> ^
<Nilby> (unintern 'setq :cl)
SGASAU` has quit [Quit: ERC (IRC client for Emacs 26.3)]
<phoe> Nilby: would be useful if it wasn't undefined
<Nilby> I like to dream. :)
SGASAU has joined #lisp
<Nilby> Sometimes I think it would be easier for beginners to swap the meaning of defvar and defparameter too.
Fare has quit [Ping timeout: 260 seconds]
* phoe waits for "< beach> We *truly* need a new Common Lisp standard."
<beach> Heh.
<Nilby> But getting rid of SETQ would have made porting SHRDLU harder.
<phoe> anything you SETQ, I SETF better
<phoe> I SETF anything better than Q
* phoe dances
* Nilby claps #lispfilks
dale has quit [Quit: My computer has gone to sleep]
<ralt> I never quite got the difference between defvar and defparameter. The only difference I can see is that you can rerun defparameter to redefine the value, whilst for defvar you have to use setf.
<phoe> that's the difference
<phoe> (defvar *my-handler* (hunchentoot:make-easy-handler ...))
v88m has joined #lisp
<phoe> (defparameter *my-handler* (hunchentoot:make-easy-handler ...))
<phoe> one of those will cause your application to explode when you recompile-reload your file
<phoe> the other will work fine
<ralt> Ah, it's for C-c C-k, gotcha
<beach> ralt: Or for anything that will reload your system.
<ralt> Right
<beach> Like ASDF:LOAD-SYSTEM.
<beach> Or anything else that you do thousands of times during development.
wxie has quit [Ping timeout: 260 seconds]
<beach> Though I hear there are people who develop Common Lisp the same way they do C or any other batch language. Those people wouldn't notice the difference, of course.
sbodin has left #lisp [#lisp]
sbodin has joined #lisp
luis has quit [Ping timeout: 256 seconds]
luis has joined #lisp
efm has joined #lisp
stepnem_ has quit [Read error: Connection reset by peer]
stepnem has joined #lisp
jprajzne has joined #lisp
heisig has joined #lisp
shifty has quit [Ping timeout: 264 seconds]
ljavorsk has joined #lisp
ljavorsk has quit [Ping timeout: 256 seconds]
shka_ has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life_ has joined #lisp
Lord_of_Life_ is now known as Lord_of_Life
jruiz has joined #lisp
jruiz has quit [Ping timeout: 260 seconds]
holycow has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
karlosz has joined #lisp
karlosz has quit [Remote host closed the connection]
nika has joined #lisp
jasom has quit [Ping timeout: 244 seconds]
SGASAU has quit [Remote host closed the connection]
sdumi has quit [Ping timeout: 246 seconds]
SGASAU has joined #lisp
sdumi has joined #lisp
Zakkor has quit [Quit: Connection closed for inactivity]
doomlist3 has quit [Remote host closed the connection]
dddddd has joined #lisp
cosimone has joined #lisp
joshcom has joined #lisp
joshcom has quit [Remote host closed the connection]
yankM has joined #lisp
<lukego> Paul Graham codes by copy-pasting from one terminal running vim into another terminal running CLISP, right?
<no-defun-allowed> I hope not.
wxie has joined #lisp
<jackdaniel> I'm sure that he has some kind of a bridge or an arc to have this automated
<no-defun-allowed> an Arc? Surely a Bel by now. (:
<no-defun-allowed> Does Graham even write Common Lisp these days?
<jackdaniel> I know, my new common lisp standard will be named arcket !
<lukego> (I'm thinking of some ancient comment he made about how he did Viaweb development. wasn't something people here would recognize I don't think)
<SAL9000> jackdaniel: CLtL42
<jackdaniel> :-)
<phoe> I propose #.(format nil "CLTL~A" (exp 1.0d0)) to make porting code more natural
<jackdaniel> arcket will be mroe inviting for people from arc and racket background
<SAL9000> alternative spelling: |arc>
<no-defun-allowed> lukego: Well, that was a while ago, and burning one's idols is definitely something one will do when deciding on programming style.
<SAL9000> (a ket vector |a> in Hilbert space represents the state of a quantum mechanical system)
<no-defun-allowed> Unless your mind goes down the same paths Graham's did, what he did is about as good as asking any other random person.
sugarwren has joined #lisp
scymtym has quit [Ping timeout: 272 seconds]
Bike has joined #lisp
sdumi has quit [Read error: Connection reset by peer]
wxie has quit [Ping timeout: 260 seconds]
sdumi has joined #lisp
<lukego> yeah sorry to bring it up, just a factoid that was rattling around my brain and fell out.
SGASAU has quit [Ping timeout: 260 seconds]
SGASAU` has joined #lisp
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
SGASAU` has quit [Quit: ERC (IRC client for Emacs 26.3)]
milanj has joined #lisp
SGASAU has joined #lisp
<ChoHag> How can I write a macro such that (do it) defines variables or functions it-foo and it-bar?
<phoe> ChoHag: expand into (let ((it-foo ...) (it-bar ...)) ...)
<ChoHag> How can I get it to modify the symbol?
<phoe> you don't modify symbols
<phoe> you create new ones
<phoe> you can create these new symbols via alexandria:symbolicate or alexandria:format-symbol or just plain old FORMAT + INTERN
<no-defun-allowed> First, you need the SYMBOL-NAME of IT, then make new names (possibly with FORMAT), then INTERN those into the appropriate package. (Or use alexandria:symbolicate as phoe said).
<phoe> no-defun-allowed: no need to get symbol name if you treat symbols with ~A
<phoe> that's a minor shortcut
<no-defun-allowed> So, you could have (defmacro make-do (it) (let ((name (alexandria:symbolicate it "-FOO"))) `(defun ,name ...)))
<no-defun-allowed> phoe: Sure.
yitzi has joined #lisp
jrx has joined #lisp
<phoe> What would be a smallest meaningful example where I can demonstrate that order of superclasses matters in multiple inheritance?
orivej has quit [Ping timeout: 258 seconds]
<phoe> the current lisp-koans example has CIRCLE, COLOR, CIRCLED-COLOR and COLORED-CIRCLE, which is feeling kind of synthetic
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
<jackdaniel> (defclass standard-line (line polyline) …)
<jackdaniel> conceptually line is also a degenerate case of a polyline
<jackdaniel> and if you have some method on line and polyline, then it may impact performance
<jackdaniel> (because i.e you may heavily optimize method for line)
<jackdaniel> s/standard-line/my-line/
* phoe thinks
<_death> (defmethod stereotypical-food ((person italian)) 'pasta) (defmethod stereotypical-food ((person american)) 'burger) (defclass stereotypical-person (american italian) ()) ;; or is it italian american?
cosimone has quit [Remote host closed the connection]
<phoe> _death: hey, that one works surprisingly well
<_death> examples are fun :)
cosimone has joined #lisp
<lukego> Is there a CL test framework that extracts EXPECT/ASSERT style examples from docstrings and tests them? (I know Python has something like that and always wanted one...)
<phoe> lukego: sounds kind of like a literate programming framework
<lukego> Could be. Just looking for a hack to avoid duplication between examples in docstrings and examples in simple unit tests.
milanj has quit [Quit: This computer has gone to sleep]
jrx has quit [Quit: ERC (IRC client for Emacs 26.3)]
scymtym has joined #lisp
CrazyPython has joined #lisp
<beach> phoe: In US spelling, you write signaled, signaling, traveling, traveled, etc. In UK spelling, the `l' is often doubled. As a native speaking of American English, you would pronounce the syllable with the double `l', as in signALLed, signALLing, travELLing, travELLed. So you need to choose which spelling you want.
<phoe> beach: correct. And I have no idea which one I should choose.
* Nilby tries to avoid mixed concerns: coding examples that make me hungry, docstrings that make code
<beach> phoe: I can't choose for you, but if you choose UK spelling, it is less likely that I personally will find mistakes consisting of using US spelling.
<beach> phoe: Use a good spell checker and follow its advice consistently.
<phoe> beach: OK, will do that.
CrazyPython has quit [Ping timeout: 260 seconds]
<beach> phoe: While you are at it, check for all the demonstrative pronouns and make sure each one is followed by a noun phrase.
<beach> .... which very few exceptions.
<_death> this example is more of single inheritance.. (defclass american (english) ()) (defclass british (english) ()) ;)
<beach> phoe: Leaving out the noun phrase very often makes the phrase ambiguous.
<phoe> beach: could you file an issue with those? I'm doing dayjob things right now and can't easily focus on IRC or the book.
<lukego> book?
<beach> phoe: "those"? :)
<phoe> beach: :(
<beach> I will.
<phoe> the remarks of yours
<phoe> lukego: yes, a book on the CL condition system
<beach> phoe: That was one example.
<lukego> oh cool!
<lukego> Condition system is one of my blind spots, would love to read that
CrazyPython has joined #lisp
<beach> phoe: Are you mentioning that the condition system was inspired by that of Multics PL/I? It might interest people who like CS history and it might inspire the others to actually learn their CS history so as to avoid inventing things that already exist.
<phoe> beach: I'm not. Please file an issue for that!
<beach> OK.
shangul has joined #lisp
JohnMS has joined #lisp
minion has quit [Disconnected by services]
CrazyPython has quit [Read error: Connection reset by peer]
ebrasca has joined #lisp
CrazyPython has joined #lisp
rogersm has quit [Ping timeout: 240 seconds]
JohnMS_WORK has quit [Ping timeout: 256 seconds]
troydm has quit [Ping timeout: 256 seconds]
MetaYan has quit [Ping timeout: 256 seconds]
MetaYan has joined #lisp
wigust- has quit [Ping timeout: 256 seconds]
troydm has joined #lisp
wigust has joined #lisp
notzmv has quit [Ping timeout: 256 seconds]
CrazyPython has quit [Read error: Connection reset by peer]
|3b|` has joined #lisp
milanj has joined #lisp
|3b| has quit [Ping timeout: 256 seconds]
lavaflow has quit [Read error: Connection reset by peer]
<boeg> You should just write one of those on-the-edge-of-your-seat computer history books
<boeg> like cuckoos nest
<boeg> i love those
<boeg> not as much computer history, more docu thriller involving computers
<_death> cuckoo's egg?
<_death> it was a good book ;)
<phoe> _death: there should be a prequel to it, named cuckoo bird
<boeg> also more funny, pleasant stuff like Hackers, Where Wizards Stay Up Late and my all time favorite; revolution in the valley
<boeg> _death: yes, sorry, my bad
<boeg> revolution in the valley has the best anecdotes ... or the best story teller, hard to tell
wsinatra has joined #lisp
<boeg> i have it in that nice hardcover editions. Its the only paper book i own that i wont part with, the rest i'm fine with having digitally
<boeg> anyways, i just realized this is not actually the café
wsinatra has quit [Client Quit]
rogersm has joined #lisp
wsinatra has joined #lisp
hiroaki_ has joined #lisp
hiroaki has quit [Ping timeout: 240 seconds]
amerlyq has quit [Quit: amerlyq]
<shka_> good day
<shka_> beach: how are you doing today?
wsinatra has quit [Quit: WeeChat 2.8]
wsinatra has joined #lisp
gko has joined #lisp
rople has joined #lisp
rople has quit [Client Quit]
rople has joined #lisp
<beach> shka_: Quite well thank you. I am in the process of "tying the knot", i.e. to create a cyclic graph of CLOS metaobjects in one of the bootstrapping environments. There are some issues, of course, and debugging those issues is not trivial, but I am making great progress. You?
wsinatra has quit [Quit: WeeChat 2.8]
wsinatra has joined #lisp
<boeg> beach: what are you working on, if you don't mind me asking?
wsinatra has quit [Client Quit]
wsinatra has joined #lisp
<phoe> beach: does SICL stand for SICL Implements Common Lisp?
<beach> Oh, that's an interesting one.
<beach> It doesn't mean anything. It is just easy to pronounce.
<beach> as "sickle"
<White_Flame> if it gets popular enough, or stack based, it'll be popsicl
<beach> Heh.
<beach> phoe: But I like your interpretation.
jruiz has joined #lisp
rople has quit [Quit: rople]
<phoe> beach: please thank /r/LispMemes for inspiration
<boeg> beach: ah!
<beach> phoe: OK. I don't know how to do that, but I would if I did.
wsinatra has quit [Client Quit]
<phoe> beach: OK, I'll pass the thanks there.
lavaflow has joined #lisp
<beach> boeg: Most of the activity takes place in #sicl, so as not to bore the socks of people in #lisp who might not be interested. I am known to have long rants there, because the channel is logged and it becomes my notebook of ideas.
wsinatra has joined #lisp
<phoe> beach: an idea for the condition system I have is to define relevant conditions in separate modules. This way, someone can grab the portable reader and also grab your version of READ-ERROR, even if it ends up being implemented via some other condition system.
wsinatra has quit [Client Quit]
<boeg> beach: i'm actually a resident over there, however i forgot everything why i joined and what it was, now i'm looking at the sicl pdf :)
rozenglass1 has joined #lisp
<beach> phoe: That's a very good idea. Recently, when we have written libraries meant to be configured, we write many functions so that the trampoline to generic functions with a CLIENT argument, thereby allowing client code to write methods on protocol functions.
rozenglass has quit [Ping timeout: 246 seconds]
wsinatra has joined #lisp
<beach> boeg: Heh OK.
wsinatra has quit [Client Quit]
wsinatra has joined #lisp
arpunk has quit [Remote host closed the connection]
wsinatra has quit [Client Quit]
rwcom34174 has quit [Read error: Connection reset by peer]
wsinatra has joined #lisp
EvW has joined #lisp
rwcom34174 has joined #lisp
Fare has joined #lisp
pfdietz has joined #lisp
wsinatra has quit [Client Quit]
wsinatra has joined #lisp
wsinatra has quit [Client Quit]
<phoe> I just got annoyed that I cannot (define-method-combination *)
<phoe> what if I wanted to multiply all the results together you know
<shka_> beach: eh, i am looking for a new job, but i was wondering how is your book going
<beach> shka_: Not going at all at the moment. I think my favorite coauthor has abandoned me.
wsinatra has joined #lisp
<shka_> oh
<shka_> i am sad to hear this
<beach> Yeah, me too.
<beach> We are still friends, but she is not doing this kind of work for me anymore. At least not right now.
<shka_> well, maybe she is just extra busy with some urgent stuff
<beach> So I am looking for a highly organized native speaking of English with a PhD in Computer Science and extensive experience in Common Lisp programming and using tools such as LaTeX and Unix tools, and who is willing to work for me for free.
wsinatra has quit [Client Quit]
<shka_> heh, i don't think i know anyone who matches this criteria
wsinatra has joined #lisp
<beach> Yeah, that's precisely the problem.
<beach> I am willing to skimp on some of the qualifications.
<beach> In fact, my favorite coauthor is not a native speaker of English, but she did her Postdoc in the US.
wsinatra_ has joined #lisp
<shka_> anyway, it sucks because i really hoped that this book would be out this year
<beach> I understand. I am disappointed as well.
<pfdietz> I was nodding up to the "free" part.
<beach> :)
<boeg> beach: what is it about? Just so I know what I won't be reading ;D
<beach> There is no money in writing books, so I am basically working for free myself.
<shka_> so perhaps kickstarter? :D
<beach> boeg: The title is "Concrete and Abstract Data Types with Algorithms".
<boeg> umgfh
<boeg> too bad
<boeg> sounds like something i'd like
<pfdietz> Indeed. The median author earns much less than minimum wage. It's a struggle to make a living writing books.
<beach> pfdietz: Luckily, I don't have to. I have my salary.
<_death> (with-tongue-in-cheek Paul Graham authored 2 CL books and he's doing quite well)
<shka_> writing CL books wasn't part of the business plan though
<shka_> :P
<pfdietz> The successful ones find a spot where they have an advantage and exploit it. But it's a lot of work, and can take decades to become an overnight success.
wsinatra_ has quit [Quit: WeeChat 2.8]
<boeg> I guess the problem, in reality is, that "making a living" is directly tied to how good you are at selling your things. Like if you are good at selling something or yourself, but don't provide something of value to society, you can still make millions, but if you are providing value to society, you can easily go home broke. It's like there is a bug in our system.
wsinatra_ has joined #lisp
ayuce has quit [Remote host closed the connection]
<boeg> well, it's not like there is
<boeg> there is a bug in our system
ayuce has joined #lisp
<beach> Here is the table of contents: http://metamodular.com/types.pdf
wsinatra_ has quit [Client Quit]
<Nilby> I have millions worth of free software.
wsinatra_ has joined #lisp
bitmapper has joined #lisp
<pfdietz> What is an editable sequence?
<beach> A sequence that accept operations such as insert and delete by position.
wsinatra has quit [Quit: WeeChat 2.8]
<pfdietz> Position being the numeric index into the list?
<shka_> pfdietz: sequence, not list
<pfdietz> Ok
<beach> Into the sequence, correct.
<shka_> and i bet that sequence translates into a concrete example of flexichains
wsinatra has joined #lisp
<beach> I am not sure I use gap buffer as one of the implementations.
wsinatra has quit [Client Quit]
<pfdietz> There is an old problem of inserting into a list, but where the position is given by a pointer to the predecessor. The interesting part is doing order queries: given two pointers into this list, which is closer to the front?
<shka_> ok, i was expecting flexichains for obvious reasons
<beach> Sure.
<beach> I am pretty sure I use some kind of tree.
<beach> Let me check...
* phoe pushes CLOS and method combinations to his fork of lisp-koans
heisig has quit [Ping timeout: 272 seconds]
yankM has quit [Ping timeout: 258 seconds]
<phoe> six lessons remaining
<beach> shka_: I use a 2-3-tree.
<phoe> that's not much
<shka_> ha!
<shka_> i use 2-3-tree as a immutable queue
<beach> 2-3-trees are under-appreciated.
SAL9000 has quit [Read error: Connection reset by peer]
<beach> They have a reputation of being hard to implement. I disagree.
SAL9000 has joined #lisp
<shka_> in fact it is code originally written by you, and this is reason why i switched license from MIT to BSD
<beach> Oh! Heh!
wsinatra has joined #lisp
<shka_> and honestly, they are a little bit difficult to implement correctly, but a lot less then some really tricky data structures, like for instance RB-tree
<beach> Absolutely.
<beach> And the performance is identical if I remember correctly.
<shka_> for lookup?
rippa has joined #lisp
<shka_> or for insert?
<beach> All operations I think.
<shka_> i am not sure about the insert tbh
<beach> 2-3-trees might have fewer memory accesses.
<shka_> true
<beach> pfdietz: Either way, a linked list is out of the question as the concrete type underlying an editable sequence.
<shka_> linear everything is not ideal
<beach> Exactly.
<shka_> also, lists can be memory hungry
<shka_> if you are for instance holding a single character in each cell
JohnMS has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
<beach> Yes, and that's the topic for the second use case: editor buffer.
<shka_> erlang strings ar linked lists
<shka_> it is amusing as heck
<beach> I mean, and editor buffer is essentially an editable sequence where the elements are characters, frequently organized into lines.
<beach> Though, I allow for elements of different types, but characters are handled specially.
<beach> That's what Cluffer is about.
flazh has quit [Quit: flazh]
<shka_> beach: well, it was a pleasure to chat with you, once again sorry about your coauthor but I hope that she is ok
Fade has quit [Ping timeout: 256 seconds]
flazh has joined #lisp
Fade has joined #lisp
<pfdietz> Algorithms becomes a different subject once you start worrying about the constants.
SGASAU has quit [Ping timeout: 264 seconds]
borodust has quit [Ping timeout: 256 seconds]
<beach> shka_: Thanks. Yes, she is OK. Just has different priorities.
<shka_> pfdietz: true, but there is a lot of areas when things need to scale to n
<beach> pfdietz: Yes, and so many authors ignore the importance of constants.
<pfdietz> n vs. n^2, constants not too important. n vs. nloglogn, constants are very important. :)
<beach> Many books by experts show implementations of binary search that take twice the time they need to.
<beach> It is embarrassing really.
borodust has joined #lisp
borodust is now known as Guest14592
<Nilby> My paradoxical belief is that editing buffers should be immutable.
<shka_> Nilby: because of undo?
<Nilby> Yes.
<shka_> eh, you may keep undo trail
<Nilby> And also supporting paralell "mutation".
<shka_> ok, this is a big one
jasom has joined #lisp
beach` has joined #lisp
beach has quit [Disconnected by services]
beach` is now known as beach
<pfdietz> Full persistence
SGASAU has joined #lisp
<phoe> being able to rewrite the koans on the condition system kinda brings a wicked smile to my face
<phoe> something between "this should be easy" and "oh no not again"
<pfdietz> shka_: one can implement an array with full persistence (being able to mutate a tree of versions) in O(nloglogn) time for n operations. This is not a practical algorithm though.
shka_ has quit [Ping timeout: 240 seconds]
<_death> (define-condition subspace-anomaly (anomaly) ()) ;; been watching too much star trek
shka_ has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
MetaYan has quit [Ping timeout: 256 seconds]
MetaYan has joined #lisp
White_Flame has quit [Read error: Connection reset by peer]
White_Flame has joined #lisp
shka_ has quit [Ping timeout: 256 seconds]
rippa has quit [Ping timeout: 256 seconds]
sjl_ has joined #lisp
heisig has joined #lisp
mixfix41 has joined #lisp
wsinatra has quit [Quit: WeeChat 2.8]
EvW has joined #lisp
dale_ has joined #lisp
dale_ is now known as dale
Fare has quit [Ping timeout: 256 seconds]
Fare has joined #lisp
mixfix41 has quit [Ping timeout: 260 seconds]
Blukunfando has joined #lisp
Josh_2 has joined #lisp
heisig has quit [Remote host closed the connection]
heisig has joined #lisp
Misha_B has quit [Ping timeout: 256 seconds]
sdumi has quit [Ping timeout: 260 seconds]
<lukego> man my lisp is rusty, it took me like 20 minutes to understand why (loop for (a b &rest c) in '((a b c1 c2 c3)) collect c) returns (C2) and not (C1 C2 C3)
nowhereman has joined #lisp
shangul has quit [Ping timeout: 272 seconds]
<_death> yeah, it should be (a b . c)
<Josh_2> I have never seen that done before
shka_ has joined #lisp
<beach> _death: Why?
<beach> Oh, I see what you mean.
nowhere_man has quit [Read error: Connection reset by peer]
<beach> Right.
<_death> beach: loop does not support the full destructuring lambda list syntax
<beach> Yes, I know. I thought you were talking about the return value.
<beach> I know because I implemented SICL LOOP. :)
<_death> ;)
__jrjsmrtn__ has joined #lisp
_jrjsmrtn has quit [Ping timeout: 272 seconds]
yitzi has quit [Quit: yitzi]
monokrom has joined #lisp
sbodin_ has joined #lisp
<phoe> okay, three more koans remaining
* phoe takes a break
sbodin__ has joined #lisp
sbodin has quit [Ping timeout: 256 seconds]
ebrasca has quit [Remote host closed the connection]
kopiyka has quit [Remote host closed the connection]
sbodin_ has quit [Ping timeout: 272 seconds]
kopiyka has joined #lisp
whiteline_ has quit [Remote host closed the connection]
whiteline_ has joined #lisp
sdumi has joined #lisp
mixfix41 has joined #lisp
SGASAU has quit [Remote host closed the connection]
Bourne` has joined #lisp
SGASAU has joined #lisp
Bourne has quit [Ping timeout: 256 seconds]
Bourne` has quit [Remote host closed the connection]
Bourne has joined #lisp
EvW has quit [Ping timeout: 244 seconds]
mixfix41 has quit [Ping timeout: 264 seconds]
efm has quit [Read error: Connection reset by peer]
heisig has quit [Remote host closed the connection]
heisig has joined #lisp
Misha_B has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
efm has joined #lisp
<lukego> Hey what are some packages that make tasteful use of print functions for structures/objects, esp such that it plays nicely with SLIME? I'm looking at my #S(VENDOR :NAME FOO ...) objects and wondering whether to keep them so verbose or use #."(VENDOR FOO) or #<VENDOR FOO> or ... gonna have to feel my way around but would appreciate a good starting point. I'll read the Common Lisp Recipes book on this topic too.
<phoe> lukego: packages? why packages?
<lukego> s/packages/examples/
<phoe> (defmethod print-object ((object vendor) stream) (print-unreadable-object (object stream :type t) ...))
<lukego> Yeah. Unreadable has the virtue of simplicity. But e.g. #.(VENDOR FOO) is almost as concise while also actually being readable. Or if I could make it play nice with presentations somehow then maybe the readability issue is moot.
terpri has quit [Remote host closed the connection]
<phoe> lukego: still, that's a print-object method away
<phoe> check the value of *print-escape* and *print-readably* and base your printing on that
<jackdaniel> #.(whatever foo) unless carefuly written, may produce a new object which won't be EQ to the original one
<jackdaniel> and that may be a huge gotcha
<lukego> I know that CLIM has fancy streams for preserving object identity through printing and so on. is there support for that in SLIME nowadays too?
<jackdaniel> yes
<jackdaniel> type "foo" in the slime repl
<jackdaniel> you may notice, that it is printed in (i.e) red color
<jackdaniel> it is a presentation
<lukego> right but if I print a structure can I make each slot a separate presentation, from my lisp print function?
<jackdaniel> now try to paste this string to another slime repl, you'll get an error that the presentation is unknown
<jackdaniel> I do not know that
<jackdaniel> (in CLIM you could)
<lukego> CLIM would have a tree of presentations right? I'm seeing that in e.g. SLDB where it's constructed specially but not obviously in ordinary printing in the REPL
<lukego> yeah
<_death> lukego: you could also use the pprinter dispatch table
_Posterdati_ has quit [Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/]
<lukego> _death: is that different than defining print methods?
Posterdati has joined #lisp
<lukego> Thanks for the tips. I'll now consult Common Lisp Recipes and SLIME manual
Nilby has quit [Ping timeout: 240 seconds]
<lukego> and thanks for the word of warning jackdaniel about #.(foo) indeed the use case I had in mind was not a good one
<jackdaniel> sure
cosimone has quit [Quit: Quit.]
<phoe> if you want read-time identity, then basically you need a read-time object store that you can read and write to intern new objects into it; not unlike symbols being interned into packages
<pfdietz> print methods are methods, and dispatch on class. pprint-dispatch-tables dispatch on types. One could, for example, have a special way of printing (cons (eql defun) t) things.
<phoe> or printing NIL as ()
<pfdietz> For that, class dispatch would suffice.
<phoe> yes, but one cannot portably (defmethod print-object ((thing null) stream) ...)
<pfdietz> Right. Nor could you dynamically bind that.
<phoe> pfdietz: curious question, can one pass SATISFIES types to a pprint-dispatch-table?
<phoe> since that allows for arbitrary computation
<phoe> I guess that's possible, just relatively unexplored
<pfdietz> phoe: I don't see why not. I suspect it would not be very efficient though. I expect implementations understand CONS, EQL, and MEMBER types and build efficient data structures for them.
<phoe> pfdietz: yep, SATISFIES would be slow and most likely need some guards in the beginning, like, (cons (eql make-thing) (satisfies make-thing-form-p))
<Bike> sbcl precomputes a type test, which seems like a good way to do it, and not any worse than satisfies really
<Bike> it also special cases cons, but i think that's about it
<phoe> by "precomputes" you mean it compiles a predicate lambda?
<_death> pfdietz: that hex printing hack in the commit was very useful for some low-level tasks ;)
<Bike> phoe: yes, like (lambda (x) (typep x 'type-goes-here))
<Bike> and of course (lambda (x) (typep x '(satisfies foo))) is just #'foo
<pfdietz> As I recall, pprint dispatch hackery was useful for communicating with SMT solvers. The default printer is almost right, except you want it to print NIL as ().
gko has quit [Ping timeout: 260 seconds]
<lukego> maybe time to fight this monsterous nix environment that I call home so that I can pull in McCLIM and check out the listener and inspector
* lukego sticks out ear at talk of SMT solvers from Lisp, a topic he knows nothing of but is curious about...
<lukego> pfdietz: what's your SMT experience, if I may ask?
<jackdaniel> if you have problems on the McCLIM side of the coin, you may ask for help on #clim
Khisanth has joined #lisp
<pjb> phoe: you can (defmethod print-object ((thing null) stream) ...), but it's not conforming to do so: you could change the behavior of the implementation. Or not.
yitzi has joined #lisp
<lukego> thanks jackdaniel
<pfdietz> I was using Z3 from a Common Lisp at previous-job.
Khisanth has quit [Client Quit]
<phoe> pjb: that's what I said, one cannot portably do that.
<pjb> phoe: "portably" is meaningless here.
efm has quit [Ping timeout: 272 seconds]
<pjb> phoe: the question is whether it's conforming code or not.
<pjb> It is not.
<lukego> I'm meaning to learn some of the new formal hotness and I'm wondering if TLA+ or Z3 etc is the best starting point. Seems like TLA+ is a lot more high level and more suited to my use case but probably also a lot more baggage e.g. idiosyncratic syntax and IDE
<pjb> (if defmethod is cl:defmethod and print-object is cl:print-object and null is cl:null).
<jackdaniel> it has a lot of meaning
<jackdaniel> if you want to define a method on null, I suspect you want to have an effect you've programmed
<jackdaniel> "portable adj. (of code) required to produce equivalent results and observable side effects in all conforming implementations. "
Fare has quit [Ping timeout: 256 seconds]
<pfdietz> The specific application was concolic testing: given a path through some code, find values for the inputs and internal variables such that execution follows that path.
<phoe> if it invokes undefined behaviour then it cannot be portable code
<phoe> hence, "portably" is meaningful here
<lukego> you do some fun stuff pfdietz :)
<phoe> it's also non-conforming, obviously
<pfdietz> Unfortunately, while it was possible to represent linked objects, solving those constraints was taking O(n^3) time in Z3.
kpoeck has joined #lisp
<pfdietz> My more recent fun testing activity is a mutation testing framework for Common Lisp. I'm already getting some good use out of it.
Aurora_iz_kosmos is now known as Aurora_v_kosmose
terpri has joined #lisp
scymtym has quit [Ping timeout: 240 seconds]
<kpoeck> Your latest random-tester is here? https://github.com/pfdietz/ansi-test/tree/master/random
<kpoeck> Clasp is now more stable, so I would like to retry running the random tester with it
<pfdietz> Yes, but as usual use at your own risk
<pfdietz> I have been adding incrementally to it
<kpoeck> can worse things happen than the lisp crashing?
<pfdietz> You could curse at me...
<kpoeck> I have to much respect, won't do that
<fe[nl]ix> lukego: what do you want to verify ?
SGASAU has quit [Remote host closed the connection]
scymtym has joined #lisp
SGASAU has joined #lisp
notzmv has joined #lisp
Cymew has quit [Ping timeout: 246 seconds]
<phoe> okay, the only koans left are the threading ones
<phoe> bordeaux-threads tutorial time!
fourier has joined #lisp
Bourne has quit [Read error: Connection reset by peer]
jruiz has quit [Ping timeout: 246 seconds]
ayuce has quit [Remote host closed the connection]
jruiz has joined #lisp
EvW has joined #lisp
jfrancis has joined #lisp
jfrancis_ has quit [Ping timeout: 260 seconds]
ayuce has joined #lisp
efm has joined #lisp
<lukego> fe[nl]ix: state machines, basically. I'm learning to make hardware and the cool kids are using formal methods but not necessarily in the env I want to be in e.g. Verilog
efm has quit [Client Quit]
Bourne has joined #lisp
jgkamat_ has joined #lisp
jgkamat has quit [Ping timeout: 260 seconds]
ayuce has quit [Read error: Connection reset by peer]
fourier has quit [Ping timeout: 252 seconds]
jgkamat_ is now known as jgkamat
ayuce has joined #lisp
sauvin has quit [Remote host closed the connection]
yankM has joined #lisp
ayuce has quit [Read error: Connection reset by peer]
tutti has joined #lisp
ayuce has joined #lisp
ArthurStrong has joined #lisp
<phoe> fe[nl]ix: Is there any reason why BT does not use ECL's semaphore implementation?
<phoe> Are they a relatively new development?
<phoe> jackdaniel: perhaps you would be able to help, too
<jackdaniel> I've disabled them, because they had a bug
<jackdaniel> it is not present in thte current release
<jackdaniel> (that is, the bug is fixed)
<jackdaniel> in fact I've made a pr which proposed semaphores, fe[nl]ix reviewed it throughfully and I've fixed the issues
milanj has quit [Quit: This computer has gone to sleep]
<phoe> jackdaniel: I see that PR in BT that introduces a portable semaphore implementation, yes
Fare has joined #lisp
<phoe> I am just curious because (apropos "semaphore") on ECL gives me some hits
<phoe> that is, on 20.4.24
<jackdaniel> ecl has native implementation of semaphores, but at the time of making that pr, the last ecl release had a bug
<jackdaniel> as noted above
<jackdaniel> so I've decided that it will be better to provide a correct version for ecl users
<phoe> I see now
<_death> great, new emacs build had me adding (setq byte-compile-warnings '(not obsolete)) to my .emacs :x
<phoe> if I understand correctly, then, it should be possible to add ECL's native semaphores to BT now that they are fixed in the new release, and fall back to the native implementation otherwise
<jackdaniel> I'd rather simply switch to the native ecl version altogether, but that's up to fe[nl]ix . I plan to make a PR some time from now
Zakkor has joined #lisp
<phoe> OK
<phoe> I'll try implementing SEMAPHORE-COUNT on CCL, which should make it possible to implement it in BT, since then it'll have 100% coverage
ayuce has quit [Remote host closed the connection]
<jackdaniel> the "portable" implementation is not bad at all, neither it does some underhanded hacks
<jackdaniel> it is a clean implementation based on existing primitives
ayuce has joined #lisp
<phoe> yes, I am aware of that
frgo has joined #lisp
<jackdaniel> n.b I have a ready PR with mailboxes (which have the same api as sbcl's), I plan to submit it soon
<phoe> portable ones? nice
orivej has joined #lisp
<jackdaniel> I've pasted a draft here a year ago or so
milanj has joined #lisp
milanj has quit [Client Quit]
fourier has joined #lisp
<jmercouris> anyone have an interesting experience they were able to solve using an expert system?
<jackdaniel> I think that word "portable" is inadequate here. primitives defined by bt is better
<jmercouris> I'm walking around with a hammer looking for nails
<phoe> jackdaniel: correct
EvW has quit [Ping timeout: 252 seconds]
<MichaelRaskin> jmercouris: what would qualify as an expert system?
<jmercouris> MichaelRaskin: like in a prolog application for example
<jmercouris> given X facts, come to Y deduction or induction
<jmercouris> to help a program make some sort of decision
ayuce has quit [Remote host closed the connection]
tutti has quit [Ping timeout: 260 seconds]
ayuce has joined #lisp
<LdBeth> how can I get setf-able subsections of a 2D array?
<MichaelRaskin> I mean, I have a prolog script to keep track what I actually know about some CS problem…
<jmercouris> LdBeth: iterate through array check each element if setfable
<MichaelRaskin> jmercouris: I did write a deduction system at some point to unify data from multiple sources with slightly different columns available
<MichaelRaskin> (using cl-graph)
<jmercouris> MichaelRaskin: can you expand on that? I'm looking for practical uses
<phoe> LdBeth: not easy. displaced arrays are only displaceable to row-major-aref.
<phoe> this means that this won't preserve 2D structure.
<LdBeth> maybe I have to use a 1D to pretend to be a 2D
<jmercouris> oh I SEE what the question is
<jmercouris> ignore what I said
<phoe> LdBeth: no need to use 1D, you can always use row-major-aref to pretend that every array is a vector
<phoe> unless you need to pass it around to sequence functions and stuff
TMA has quit [Ping timeout: 258 seconds]
shifty has joined #lisp
<LdBeth> phoe: ah, I see
<phoe> okay, I've rewritten the koans
<phoe> now to test them and submit upstream
<phoe> if anyone has a while to review them, https://github.com/phoe-trash/lisp-koans/tree/better-koans
<phoe> should be free of UB and implementation-defined behaviour now, and should have some decent code style
<frgo> Hi guys - I am looking for help on defining a type and can't get this to work: https://gist.github.com/dg1sbg/4f1c2e3bf0ab3b0336661b460d0fcc18 - appreciate any hints if anybody could have a look.
shka_ has quit [Ping timeout: 260 seconds]
<frgo> I feel dumb and blind and ...
<phoe> frgo: '(satisfies state-name-p)
<Bike> frgo: deftype is like a macro function. you probably want to quote the result
<phoe> DEFTYPE is like a macroexpander
EvW1 has joined #lisp
jw4 has joined #lisp
<frgo> Holy smokes... Yep. That was it - that and a typo. Big thanks!
izh_ has joined #lisp
yitzi has left #lisp ["Good Bye"]
terpri has quit [Remote host closed the connection]
fourier has quit [Ping timeout: 260 seconds]
terpri has joined #lisp
terpri has quit [Remote host closed the connection]
terpri has joined #lisp
cosimone has joined #lisp
trn has quit [Ping timeout: 260 seconds]
|3b|` has quit [Ping timeout: 260 seconds]
akoana has joined #lisp
heisig has quit [Quit: Leaving]
trn has joined #lisp
nika has quit []
izh_ has quit [Quit: Leaving]
<jmercouris> so nobody has much use for expert systems?
<jmercouris> that's the feeling i am getting
jw4 has quit [Quit: tot siens]
jw4 has joined #lisp
<_death> jmercouris: expert systems are useful for many situations, not just "AI".. for example they're also used as "business rules engines"
<jmercouris> _death: can you give me an example?
<_death> an example of what?
<jmercouris> of a business rule engine?
frgo has quit [Remote host closed the connection]
<jmercouris> what is it?
frgo has joined #lisp
<_death> there are lists in the See also section..
<jmercouris> ah, i see
<jmercouris> i know what they are
<jmercouris> the term was eluding me
<jmercouris> that doesn't really help me
<_death> I'm not sure what you're looking for.. you can read a good AI history like Nilsson's book, which describes some famous expert systems like the DENDRAL project or the MYCIN system.. there's a book by Feigenbaum which is on my to-read list called The Rise of the Expert Company, and there's also a MYCIN book available on aaai.org
<jmercouris> like i said im running around with a hammer looking for nails
<jmercouris> the concept of expert systems intrigues me, and i'm thinking about how to use them in next for something novel
<jmercouris> its how i come up with ideas
<_death> does it intrigue you in the abstract?.. like I said, there are many actual expert systems described in the AI literature, so it's easy to imagine uses (whenever some knowledge needs to be codified.. there's a whole "knowledge engineering" field)
<jmercouris> i guess a little bit in the abstract yeah, i am starting to play around with prolog a little bit
narimiran has quit [Quit: leaving]
<jmercouris> its on cliki i think
<jmercouris> simple prolog implementation in CL
<jmercouris> it got me really thinking
<_death> well, prolog uses backwards chaining.. classic expert systems used either that or forward chaining, or a hybrid approach..
<jmercouris> does that strongly effect the tool?
<_death> do you know the book Paradigms of AI Programming?
<jmercouris> I do know it
<jmercouris> Ive not read it though
<_death> might want to give it a read.. it describes a prolog interpreter and compiler, as well as an EMYCIN-like system
<jmercouris> i will consider it, thanks
<jmercouris> but first, can you implement some Perl code I have in Lisp?
<jmercouris> I want to know if I should learn Lisp
<jmercouris> i'm joking of course ;-)
<_death> it also describes GPS (precursor to many AI planners) and other famous systems
<_death> the PAIP book is even available online nowadays
<jmercouris> yeah
<jmercouris> on github
<jmercouris> all the source: https://github.com/norvig/paip-lisp
<_death> though my physical copy is dog-eared by now.. ;)
<jmercouris> dog eared?
<MichaelRaskin> jmercouris: folds on corners instead of bookmarks
trn has quit [Ping timeout: 256 seconds]
<jmercouris> ah :-)
<jmercouris> thank you
<MichaelRaskin> jmercouris: well, it looks like the other conversation I did not want to interrupt has concluded.
fourier has joined #lisp
<MichaelRaskin> My problem was basically different records about the same people.
<fouric> does anyone know of an existing CL SPICE parser or generator library? le goog reveals nothing
<MichaelRaskin> With some steps done in a partially anonymyzed way, later deanonymized
Alex-Dj has joined #lisp
Alex-Dj has quit [Excess Flood]
<jmercouris> is there something about an expert system that lent itself to better solving your problem than a traditional pipeline?
<MichaelRaskin> I am not sure what I did was strictly an expert system
<MichaelRaskin> But I needed to accomodate the fact that we had a kind of sharding, and each shard had its own quirks
<jmercouris> right
<jmercouris> so you wrote several adapters?
<jmercouris> or data normalization functions?
<MichaelRaskin> Well, the problem was that deanonymization reports that I needed to unify had wildly varying column subsets reported.
<MichaelRaskin> Sufficient to identify in specific case, but that's it
<MichaelRaskin> And I knew I cannot normalise once because updates _will_ happen
<MichaelRaskin> And I knew better than to write 10 adapters independently and hope they all work…
<jmercouris> i see
<jmercouris> so it would guess which columns to use?
<jmercouris> based on some rules?
<MichaelRaskin> So I wrote down what each column actually meant (of course the naming was different between shards), then used CL-GRAPH to infer from some attribute combination what more we can tell
<MichaelRaskin> (with a ruleset of permissible inference steps, yes)
<jmercouris> i see
<jmercouris> fascinating
<jmercouris> i think that could be used for general parsing
<jmercouris> and data extraction
fourier has quit [Ping timeout: 240 seconds]
<MichaelRaskin> It was annoying to debug in the following way: it got a high failure rate on one shard. I tried to see what's wrong there. But the failure rate was not high enough for me to consider I failed to label one of the critical column
<MichaelRaskin> I mean, you don't get 10% error rate when you miss the primary stuff you expect to use for identification, right? right? — wrong, the code was good enough at this game to almost overcome the miss
<jmercouris> data normalization is an absolute pain
<jmercouris> even if you had written pipelines debugging would be difficult
<jmercouris> i know because ive done and banged my head for a long time
<MichaelRaskin> If I wrote manual pipeline I would have made more mistakes and that would be true pain
trn has joined #lisp
<MichaelRaskin> fouric: my first two guesses at what SPICE even is are most likely wrong (SPICE the protocol for remote desktop, especially for VMs; SPICE the circuit emulator). That might be a part of the problem…
sjl_ has quit [Quit: WeeChat 2.3-dev]
<MichaelRaskin> jmercouris: I have come to believe that identity is a lie unless you assign it and never let it out of your control. User accounts in your system? Sure, they might be identities. «Independently sourced records A and B describe the same person»? What does it even mean.
<jmercouris> identities are a lie, they are but avatars
<jmercouris> different sides of the same face
<MichaelRaskin> Sometimes… with human oversight… you can allow such a bold guess to be recorded. Yes, it is still a bold guess even after you have seed the person's passport
<_death> MichaelRaskin: that sounds like something that can benefit from a blackboard system
<MichaelRaskin> What is a blackboard system? Blackboard™? Nothing can ever benefit from this abomination, except the back accounts of some specific frauds.
<jmercouris> ah, blackboard
<jmercouris> you guys just took me back to high school
<Bike> you used blackboard in high school?
<jmercouris> yes
<Bike> depending on the type of blackboard, that makes me feel either very young or very old
<jmercouris> both kinds
<MichaelRaskin> I used blackboards for giving university-level lectures, even.
<jmercouris> i am talking about the software...
<jmercouris> but we had physical blackboards and whiteboards
<jmercouris> i went to a very special school
<MichaelRaskin> Blackboards obviously better than whiteboards
<_death> for example, a famous blackboard system, HASP, received acoustic reports from multiple sensor arrays in the ocean, and from that had to infer the current locations of submarines
shifty has quit [Ping timeout: 246 seconds]
<holycow> MichaelRaskin: especially with japanese chalk: https://www.youtube.com/watch?v=PhNUjg9X4g8
<MichaelRaskin> Meh
karayan has quit [Remote host closed the connection]
<MichaelRaskin> _death: I guess with a strong enough stretch I could classify the way the inference rules interacted as a blackboard system…
<_death> you can imagine there is a blackboard and a bunch of experts.. you place a piece of a puzzle on the blackboard, and when an expert sees an opportunity to use his specialized knowledge in order to complete the puzzle, he adds a piece to the blackboard
<jmercouris> ah
<jmercouris> i've never heard this term outside of you defining it just now
<MichaelRaskin> _death: I meant stretching towards this definition, yes
karayan has joined #lisp
* Xach ponders a blackbeard system
<Josh_2> what is a blackboard system?
Misha_B has quit [Remote host closed the connection]
<Josh_2> thonk
* p_l has a lot of fun teaching people that kubernetes is a blackboard system, thanks to learning that class of systems due to gbbopen :3
<_death> gbbopen author did alot of research on distributed blackboard systems
<p_l> gbbopen was developed mostly in 1990s, wasn't it?
<jmercouris> that guys name sounds like a typo
<jmercouris> gbbopen
<p_l> jmercouris: it's name of the software package, GBBopen - the "open" part is due to open-sourcing it
<p_l> it used to be proprietary package with considerable licensing price, iirc
<_death> p_l: it's actually a rewrite of GBB
<p_l> _death: ah, I didn't know about rewrite
<p_l> I did knew it differed
<_death> the best introductory blackboard papers are the ones I linked in the reddit thread though
fitzsim has joined #lisp
<p_l> I like using blackboard system to explain k8s to people, cause in my area it's probably the biggest and most plainly visible blackboard system
dalz- has joined #lisp
<p_l> even if it's one of the simpler ones
<_death> I don't really know what kubernetes is (my interest in "big data" and web and such went to zero some years ago)
<axion> pngload 2 is in!
<phoe> <3
Lord_of_Life_ has joined #lisp
<p_l> _death: to use non-(current)-hype terms, it's a multi-agent system for resource allocation on computer clusters
<p_l> (what? multi-agent system hype ended so far ago people /forgot the term/)
Lord_of_Life has quit [Ping timeout: 260 seconds]
Lord_of_Life_ is now known as Lord_of_Life
<_death> since you're saying it's a blackboard system I will need to check it out some time ;)
sonologico has joined #lisp
<p_l> _death: understanding the concepts of blackboard systems makes it *easy* to understand
jw4 has quit [Quit: tot siens]
<p_l> handling the state storage in production can be annoying though
<jmercouris> not if you use mongo db /s
<jmercouris> i'm sorry, i'm in this annoying mood, i'm done :-D
<p_l> fuck mongo
<_death> I also said on the reddit thread that I need to read the paper about Network Fragments (to make sense of "bayesian blackboard system").. but I've been busy reading and implementing a related paper (actually completed implementation yesterday! but want to extend it a bit before moving on)
<phoe> okay, 50% of koans tested
Zakkor has quit [Quit: Connection closed for inactivity]
<phoe> slep time
karlosz has joined #lisp
jw4 has joined #lisp
EvW1 has quit [Ping timeout: 240 seconds]
sugarwren has quit [Quit: Leaving]
EvW has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
kpoeck has left #lisp [#lisp]
dalz- has quit [Remote host closed the connection]
shymega has quit [Quit: Ciao.]
gravicappa has quit [Ping timeout: 246 seconds]
EvW has joined #lisp
pve has quit [Quit: leaving]
rand_t has joined #lisp
<_death> p_l: btw, the license of gbbopen says 2002-2015 (though there was active development in 2016 as well..) and the papers describing its use (not gbb) are from 2007 or so
<_death> so it's 2K-approved
<p_l> _death: there are stubborn bits of AI that aren't smothered down by ML-induced idiocy :)
<_death> p_l: I think actually there is a lot of that kind of AI, it's just massively overshadowed by FAANG-influenced ML research.. in "critical" fields it gets more opportunity to show
<p_l> _death: There's a lot, but it's "alot" due to law of large numbers and surviving endeavours from the past
<p_l> the amount of times I've seen hardcoded decision trees that could have been an expert system derivative /is too damn high/
<p_l> the one time I've seen someone actually use bit of prolog inspired code outside of our more, let's say niche, communities, the final product was so bad I tracked down the main author and considered visiting with a wrench (failure of the project based around the software actually influenced safety and security of people)
<_death> yeah, there are many systems which could benefit from these architectures.. I know I wrote lots of stuff that in retrospect could've been better architected using a "business rule engine" or a blackboard system :/
<p_l> _death: I mostly work in so-called "DevOps", letting my MSci in AI gather dust, but it's part of why I'm kinda bullish on kubernetes. It uses the ideas I know waylaid from last 3 decades to drastically give me more leverage :)
<p_l> instead of manually doing configurations, even if through automated scripts, I just state desired state and let the computer figure things out
<_death> I remember I skimmed some kubernetes code.. it's >1M lines of code, isn't it? at that time I decided to stop and slowly back away
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU has joined #lisp
SGASAU has quit [Remote host closed the connection]
SGASAU` has joined #lisp
<fouric> MichaelRaskin: whoops, i didn't even know there was more than one SPICE - i'm interested in the circuit netlist format
<fouric> i can't seem to find any CL libraries for it
<fouric> even though there have been a few circuit-related CL tools
tutti has joined #lisp
tutti has quit [Remote host closed the connection]
<p_l> _death: it's big, yes. Some of that is because of language that isn't that capable, some of it is just necessary complexity where ~20% of the code makes the high level concepts, and the rest is the interface code for things that get controlled (there's ongoing effort to decouple components into separate code bases)
<pjb> fouric: ask Posterdati, he worked on one.
<_death> p_l: ok, I'll check it out sometime.. guess we drifted a bit offtopic
<p_l> well, it's mostly of interest if you deal with more... industrialized? deployment
man213 has joined #lisp
akoana has left #lisp ["Leaving"]
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
ayuce has quit [Remote host closed the connection]
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
<fouric> pjb: thank you very much
<fouric> wait, are you supposed to thank people here? or just silently communicate gratitude through the lisp hive-mind telepathic network?
<p_l> fouric: social glue code to grease thins is not frowned upon, and might be considered even favoured ;)
<aeth> INCF is the appropriate protocol
<aeth> (incf p_l) ; for example
<aeth> Of course, this has the disturbing implication of globals existing without earmuffs like *foo*
<_death> according to many irc clients we're more like <dylan-class>es
<fouric> p_l: excellent! i like social glue - just some of the norms in #lisp made me unsure about whether to use it here or not
<fouric> ty
<fouric> aeth: it's probably ok - #lisp is a working codebase, no need to go and mess it up by renaming all of the special vars ;)
random-nick has quit [Ping timeout: 264 seconds]
<pjb> aeth: more probably nicks are symbol-macros.
rgherdt has quit [Ping timeout: 246 seconds]
Oladon has joined #lisp
<Oladon> Hrm. What's the best approach for figuring out why a custom setf method isn't working?
<jackdaniel> phoe: if you are curious about said mailboxes, here you may peek how I've implemented them: https://github.com/sionescu/bordeaux-threads/pull/69/files
<pjb> Oladon: define "best"?
<Oladon> pjb: uh... one that works :)
<Oladon> I'm just sort of at a loss
<pjb> Oladon: you can as on irc to have your code debugged for you. Or you can debug it yourself. Or you can just rewrite it without bugs.
<Oladon> I think I don't know what could be going wrong, so I don't know where to look
<pjb> Oladon: debugging can involve tracing or printing.
<Oladon> pjb: :P I'm trying a hybrid of the first two... learn how to debug it myself by asking on IRC!
<pjb> You don't know what's going wrong, because you're assuming that your assumptions are valid.
<Bike> depends on the sense in which it is not working
<pjb> So printing various things from your code and checking them should allow you to find some invalid assumption.
<pjb> You could also add assert expressions.
<_death> what is a "setf method"? do you mean (defmethod (setf ...) ...) ? or one defined using define-setf-expander (which used to be called define-setf-method...) ?
<Oladon> Bike: I have a Postmodern dao-class object. I can defmethod a setf on one slot, and it gets called. If I do it on a different slot, it never gets called (as evidenced by the good old "print statement" approach)
<Bike> then the problem isn't whether it works, it's whether it's called, no?
<pjb> Oladon: you may use find-method to validate the method dispatching.
<Oladon> Bike: True. I should be precise. :)
<Bike> in that case it's the same as figuring out why any function you expect to be called is not being called
nowhereman has quit [Ping timeout: 265 seconds]
<Bike> look at the call sites, make sure control is actually passing through there, that kind of thing
<_death> you can (trace (setf ...)) for example
<Oladon> _death: Sorry, missed your question. Yes, (defmethod (setf ...) ...)
<Oladon> I've validated that the object I'm setfing is of the correct classes...
<aeth> _death: the former is a setf method, the latter is a setf-method
<pjb> (defgeneric goo (x)) (defclass foo () ()) (let ((o (make-instance 'foo))) (assert (eq (find-class 'foo) (class-of o))) (assert (find-method (function goo) '() '(foo))) (goo o)) ; stuff like that.
<aeth> I guess "method setf" might be clearer
<_death> methods have no names.. the generic functions containing them do
<Bike> Oladon: for a generic function it can be helpful to use compute-applicable-methods to make sure the methods you expect are being called
<_death> to see what methods a gf FOO has, I usually use C-c I #'foo RET
<Oladon> Bike: Ooh, that seems useful. Thanks!
<Bike> or mop:compute-applicable-methods-using-classes may be more convenient
devrtz has quit [Quit: ZNC - http://znc.in]
devrtz has joined #lisp
<Oladon> I may've identified the issue, but if it _is_ the issue I don't understand it. The class I'm specializing on doesn't have the slot I'm setfing -- that slot is inherited from a different class. Could that be the issue?
<Bike> not as described, no. it still has the slot, just not directly.
<Oladon> Aight, that's what I originally thought, but... hrm.
madage has quit [Ping timeout: 240 seconds]
madage has joined #lisp
SGASAU` has quit [Remote host closed the connection]
SGASAU` has joined #lisp
<Oladon> Huh. It looks like it was a weird issue with Postmodern... when I removed the (:table-name nil) from the defclass, it suddenly started working.
<Oladon> Now to go dig into the Postmodern code and try to figure out why in the world that is -- it's not that it wasn't adding that class to the child objects, because I checked that.
<Oladon> Thanks for the help, friend!
<Oladon> friends*