rumbler31 has quit [Remote host closed the connection]
smurfrobot has joined #lisp
<beach>
asarch: Why are you telling me this?
resttime has quit [Quit: Leaving]
jack_rabbit has quit [Ping timeout: 248 seconds]
nalkri has joined #lisp
<asarch>
Well, you suggested me that book
<asarch>
I thought... well...
<beach>
I think you should buy it. I did.
<logicmoo>
asarch: beach is not used to people ever taking his advice
<asarch>
?
<asarch>
Oh, sorry. I didn't know :-(
<asarch>
I can't buy it
<loke>
asarch: PCL is a great advice.
<asarch>
It's quite expensive :'-(
smurfrobot has quit [Remote host closed the connection]
<beach>
asarch: gigamonkey worked pretty hard to write that. I think he deserves his royalties. Perhaps you should send him some money.
<asarch>
Besides, I'm saving for "Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp", "The Elements of Artificial Intelligence" and "Introduction to Artificial Intelligence"
<asarch>
Oh...
<asarch>
I thought he was rich :-(
whyNOP_ has quit [Ping timeout: 248 seconds]
damke_ has quit [Ping timeout: 264 seconds]
whyNOP has joined #lisp
<asarch>
But ok, I will send him the cost of the book
<beach>
Some 10% would be fine. That would be his royalties.
damke_ has joined #lisp
<beach>
I am the first to admit that publishing companies are unethical in the way they treat their authors, and in the way they make money. That is why I use self publishing when I write books.
jack_rabbit has joined #lisp
<asarch>
I thought I could get the hard copy of the book the same way you can get books from the Free Software Foundation
<beach>
Well, I haven't checked whether what you did is legal; perhaps it is. I just think that the author deserves to be compensated for his work. The FSF does not have as a goal to make money from their publications (though they would be happy for you to order a hard copy, or course). But I pretty sure that gigamonkey did not write that book just to be a nice guy and in order to spread the word about Common Lisp.
xrash has quit [Remote host closed the connection]
<asarch>
If you need to change some parameters of the book, like the paper size, download the source code and compiles it
smurfrobot has joined #lisp
<asarch>
Most of the Smalltalk books are in the PDF file format to download
<asarch>
Oh, $70 USD :-(
<asarch>
What do you think about "Let Over Lambda"?
<beach>
But thanks for the information. I am now convinced that I absolutely should not make HTML versions of my books available online.
<asarch>
D'oh!
<asarch>
HTMLDOC is, after all, a great tool, isn't it?
<asarch>
The new way to get PDF from DocBook is from HTML plus CSS style sheets
<asarch>
20 years ago was the way to say "Fuck the System" o/
<asarch>
:-P
<asarch>
Microsoft was the enemy back then
* logicmoo
is a subversive nowadays reading the clhs in .chm form
<asarch>
Even Wikipedia had a great conversion tool to get the PDF version of each article those days
<asarch>
Now it really is a shame :'-(
elephanter has joined #lisp
bugrum has joined #lisp
ahungry has quit [Remote host closed the connection]
shka has joined #lisp
smurfrobot has quit [Remote host closed the connection]
zmt00 has quit [Quit: Leaving]
<jackdaniel>
asarch: there is a huge gap between "fair share" and "free books", I think that you mistake these two terms
<jackdaniel>
I'm pretty sure RMS doesn't promote idea of free labor in contrast to fair share and the consumer rights to have control over what he bought / use
neoncontrails has quit [Remote host closed the connection]
<jackdaniel>
(re the article you have linked)
<asarch>
D'oh! Ok, I will re-read it (maybe because my English was very limited back then)
<asarch>
Where about in France are you in beach?
<jackdaniel>
and generally, fsf encourages to buy the manuals from them, but doesn't close the door for people, who are not interested in spending money for other people effort (wikipedia, on the other hand, encourages donations, which for some reason outrage some people)
heurist has quit [Ping timeout: 256 seconds]
Karl_Dscc has joined #lisp
Oladon has quit [Read error: Connection reset by peer]
Oladon has joined #lisp
LocaMocha has joined #lisp
bugrum has quit [Remote host closed the connection]
heurist has joined #lisp
mishoo has quit [Ping timeout: 264 seconds]
<beach>
My solution to expensive books is to self publish and to set a reasonable price on the book. That way, more people can afford it, and I get paid significantly more per copy sold than if I had used a publishing company.
terpri has joined #lisp
LocaMocha has quit [Ping timeout: 240 seconds]
oleo has quit [Quit: Leaving]
<jackdaniel>
I like the idea promoted by leanpub (namely: author sets minimum price and suggested price, user may pay any amount [min-price; inf)) and service takes 10% itself
joast has quit [Ping timeout: 268 seconds]
<jackdaniel>
so royalty for the author is 90% and it is possible to publish book with minimal price 0 (of course it is only for electronic books afaik)
<jackdaniel>
study shows, that people often pay more for books which have minimal cost $0 if they find them useful
<beach>
Yeah, it has to cover the cost of printing and distribution.
<jackdaniel>
but that's offtopic from my side, sorry about that
LocaMocha has joined #lisp
pjb` has joined #lisp
<DeadTrickster>
Hi loke
<jackdaniel>
// one last remark, there is apparently service called lulu, which allows you to print electronical books *you own* for some reasonable fee
pjb has quit [Ping timeout: 272 seconds]
<shka>
beach: when this book will be available?
momofarm has joined #lisp
<dmh>
i have used lulu to print many reference manuals to great effect
dec0n has joined #lisp
<beach>
shka: I have one book in English available.
<beach>
I think we should drop the subject now, and pick it up when I have Common Lisp related books to show.
<jackdaniel>
speaking of books, I've ordered PAIP and it arrived on Monday
<jackdaniel>
looks impressive :)
<beach>
It is.
<beach>
Very good book.
<swhc>
Is it good for beginner s
fikka has quit [Ping timeout: 248 seconds]
swhc has quit [Remote host closed the connection]
HoloIRCUser has joined #lisp
<beach>
HoloIRCUser: No.
HoloIRCUser has quit [Client Quit]
HoloIRCUser has joined #lisp
HoloIRCUser is now known as swhc
dddddd has joined #lisp
swhc has quit [Remote host closed the connection]
<jackdaniel>
minion: tell swhc about pcl
<minion>
swhc: please look at pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
<jackdaniel>
minion: tell swhc about gentle
<minion>
swhc: please see gentle: "Common Lisp: A Gentle Introduction to Symbolic Computation" is a smoother introduction to lisp programming. http://www.cs.cmu.edu/~dst/LispBook/
HoloIRCUser has quit [Remote host closed the connection]
<beach>
jackdaniel: Since the maintainer of minion does not want to adapt it to the new format of cliki, I often give minion explicit entries so as to avoid that message.
<jackdaniel>
asarch: this is not channel dedicated to javascript
<asarch>
Packt once in a while lets you download some titles for free
<asarch>
I mean, speaking about books
Karl_Dscc has quit [Remote host closed the connection]
<jackdaniel>
asarch: I think this discussion fits better #lispcafe (and I'm aware I did carry offtopic myself ;)
swhc has quit [Remote host closed the connection]
HoloIRCUser has joined #lisp
<asarch>
Anyway, thank you very much guys
<asarch>
And I really sorry for stealing Peter Seibel's work. I promise I will compensate him
LocaMocha has quit [Ping timeout: 272 seconds]
greaser|q has quit [Changing host]
greaser|q has joined #lisp
<asarch>
I will write a book about learning Lisp (Common Lisp) and I will give it for free
greaser|q is now known as GreaseMonkey
HoloIRCUser has quit [Read error: Connection reset by peer]
<beach>
asarch: Good luck.
<asarch>
Have a nice day :-)
<asarch>
See you later
<asarch>
Viel Spaẞ!
asarch has quit [Quit: Leaving]
flamebeard has joined #lisp
<jackdaniel>
I'm pretty sure you didn't steal it, it is available for free after all
LocaMocha has joined #lisp
<jackdaniel>
yet PCL is on my to-buy list, I want to have it in my collection
<phoe>
jackdaniel: depends. MINIX is also available "for free" and yet it's possible to steal it; just don't obey the terms under which it is licensed.
* phoe
afk
HoloIRCUser has joined #lisp
HoloIRCUser has quit [Remote host closed the connection]
quazimodo has joined #lisp
orivej has quit [Ping timeout: 272 seconds]
tcr has joined #lisp
Mon_Ouie has joined #lisp
d4ryus1 is now known as d4ryus
fikka has joined #lisp
Cymew has joined #lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
neoncontrails has quit [Remote host closed the connection]
<jmercouris>
I'm curious, how might some of you write it instead? would you have used map? checked the result of the function etc?
<jmercouris>
E.g. what could be a better way to write it
<jmercouris>
What is the goal of the snippet? To load quicklisp if it is in either one of those directories
<beach>
I see two small problems. The first is the indentation of the DO clause of the call to LOOP. The second is the name of the function LOAD-QUICKLISP which suggest that it is always capable of loading Quicklisp.
<beach>
Also, for that kind of loop, you can write it as (mapc #'load-quicklisp ...).
<beach>
And you can use a quoted list rather than calling LIST, because the list is not going to be modified.
<beach>
You might consider signaling an error if the file can not be found in any of those directories.
<beach>
Like rename load-quicklisp to maybe-load-quicklisp and have it return a Boolean value indicating whether it found the file to load.
test1600 has quit [Quit: Leaving]
<pjb`>
And you might consider shortcutting it when the loading has been done.
<beach>
Yeah.
<pjb`>
If you have both directories, it probably will be bad to load both.
pjb` is now known as pjb
<beach>
Then you can write the loop like this (unless (loop for path in ... some (maybe-load-quicklisp ...)) (error ...))
<beach>
Well, if the current function is supposed to return a Boolean indicating success, it needs to be rewritten. Because as it is written now, it should only be used for side effect.
<pjb>
Do you say that for the WHEN? It's already returning the wanted boolean.
White_Flame has joined #lisp
<beach>
Semantically speaking yes, but not software-engineeringly speaking.
<republican_devil>
do you feel lisp>php etc for web?
wxie has joined #lisp
<turkja>
productivity... is of course interesting, but personally i don't program in lisp for being productive. For that i'd choose python. Lisp programming is simply fun, and it feels right and correct. Purely personal opinion, obviously.
<jmercouris>
turkja: As a "expert" python developer and "novice" lisp developer, I would say one is not necessarily more or less suited to productivity
<jmercouris>
turkja: It depends on your application, if your spec will change and you must update a lot, lisp is infinitely more flexible
<jmercouris>
if your goal is to hammer something out with a clear spec, python will oft be quicker
<turkja>
jmercouris: i'm actually referring simply to available libraries etc
<jmercouris>
turkja: ah, then yes, in this case python is unbeatable
<turkja>
and to the hammering, which seems to be the way to do things
<jmercouris>
though every library invents its own stupid paradigms
<pjb>
republican_devil: try to write some lisp code everyday to keep sanity after 8 hours of torture with java or whatever.
<pjb>
I find python way too limited: you only have OOP to work with python. In CL you can use any paradygm you want or need, and you can even invent new ones.
<jmercouris>
pjb: There's a lot more than just OOP, you could program in a completely functional style in python, functions are first class citizens etc
<jmercouris>
You could also do procedural code if you wanted to
<jmercouris>
Also there are some limited "macros" like things called "decorators"
<pjb>
jmercouris: no lambda worth it.
<jmercouris>
pjb: You can create lambdas in python
<pjb>
only oneliners.
<jmercouris>
pjb: You could break it into multiple lines by using \
<pjb>
:-)
<pjb>
What a joke…
<jmercouris>
ah, well, it is annoying to do, but there are other control structures that allow you to break across new lines
<pjb>
It's turing complete so you can also use python to implement CL…
<jmercouris>
Like if you have a function you can break the args on new lines without \
<jmercouris>
I've actually done that
<jmercouris>
I've also implemented a Lisp in C as well
<jmercouris>
way back when I was going to try to make my browser emacs style with a "lisp interpreter" and "c functions" for fast things
<jmercouris>
It's amazing what you don't know you don't know, that would have been a horrific codebase to work with
SuperJen has joined #lisp
<jmercouris>
One of the best and worst decisions in python was to do code indenting with spaces and no brackets or anything
<jmercouris>
forces your code to be very neat, and break apart complexities if you see that a line is getting too long, but it is also very infuriating sometimes
wxie has quit [Quit: Bye.]
<jmercouris>
This isn't #python though, so I'll refrain from elaborating further :D
<Shinmera>
Fare: Around?
Guest39874 has quit [Ping timeout: 272 seconds]
Sigyn has quit [Quit: People always have such a hard time believing that robots could do bad things.]
Sigyn has quit [Read error: Connection reset by peer]
<turkja>
For me the biggest strength of Lisp is the compiler integration with slime and friends, and the whole idea of iterative or interactive programming (sorry i can't find better term). That i simply cannot find in any other language
<turkja>
actually the simple idea of "live compiler" living in my program makes me smile :D
Sigyn has joined #lisp
<Shinmera>
What pains me most about my current Android development is the lack of function reloading and the lack of a REPL to try things.
<Shinmera>
There's lots of stuff that annoys the hell out of me beside that, but that's what's costing me the most time.
<drdo>
What annoys me most about android development is android
<turkja>
Shinmera: you have been spoiled!
<Shinmera>
I like to think that the rest of the world has been living with their legs chopped off instead.
Jen has joined #lisp
Jen is now known as Guest19887
<turkja>
hehe
JenElizabeth has joined #lisp
<jmercouris>
Shinmera: You can use ECL to develop on android
<jmercouris>
You can also use it with EQL even
<jmercouris>
if you were feeling particularly hard-core you might look at what is possible with NDK and make bindings
<myrkraverk>
why does (with-foo (bar) (format t "~a~%" bar)) ; work?
<Shinmera>
Why wouldn't it
<myrkraverk>
That is, I don't "get" the (lambda (,foo) ...) part.
<TMA>
myrkraverk: try (macroexpand '(with-foo (bar) (format t "~a~%" bar)))
<myrkraverk>
ok.
<myrkraverk>
Ah, so the ,foo turns it into bar during macro expansion.
<myrkraverk>
That was the part that was puzzling me.
AlexeyKamenew has quit []
<basket>
myrkraverk: Backquote is just shorthand for consing together lists, so if foo is bound to bar, then `(lambda (,foo) (fn ,foo)) is the same thing as (list 'lambda (list foo) (list 'fn foo))
<basket>
myrkraverk: The unquoted expressions are just evaluated as normal
lnostdal has quit [Ping timeout: 272 seconds]
<myrkraverk>
Right.
norserob has joined #lisp
<myrkraverk>
Question, do compilers (sometimes) optimize away the extra funciton calls due to lambdas?
<Xach>
m00natic has joined #lisp
<myrkraverk>
Not that it matters in my case, I'm just curious.
gigetoo has quit [Ping timeout: 246 seconds]
<logicmoo>
in wam-cl i sometimes convert the lamda into a real call.. but in the case you gave there i probably wouldnt
gigetoo has joined #lisp
<logicmoo>
naw i guess it could still conver to merely (format t "~a~%" bar)
joast has joined #lisp
lnostdal has joined #lisp
LiamH has joined #lisp
<jdz>
logicmoo: did you intend (truename "./")?
<logicmoo>
jdz: oh actualyl i did
<logicmoo>
and clisp doesnt return the same error
<logicmoo>
(although it could if it wanteD)
<phoe>
beach: I just realized.
<phoe>
I think the CL standard assumes that all pathnames create some kind of hierarchical tree-like structures.
<phoe>
How would pathnames work in your LispOS?
norserob has quit [Quit: leaving]
attila_lendvai has quit [Quit: Leaving.]
<Shinmera>
paths can be interpreted as a series of tags
<Shinmera>
and truename would produce a canonical ordering of the tags.
<phoe>
I see.
Bike has joined #lisp
Denommus has joined #lisp
<beach>
phoe: I haven't really thought about it much. What Shinmera says sounds plausible.
<pjb>
myrkraverk: theorically, they could. In practice, I don't know if many CL compilers do. This is something you'd find probably more in scheme compilers.
<myrkraverk>
Ah.
<pjb>
myrkraverk: similarly, all the functions in CL can be open-coded (implemented as special operators). So a CL compiler is free to transform a mapcar lambda whose result is ignored into a dolist.
<pjb>
But I don't know any doing that.
Tobbi has joined #lisp
<pjb>
Perhaps sicl will be able to do it.
<Bike>
i think sbcl actually does that even if the result is ignored
warweasle has joined #lisp
<Bike>
isn't ignored*
Sigyn has quit [Quit: People always have such a hard time believing that robots could do bad things.]
Cymew has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
EvW has quit [Ping timeout: 255 seconds]
Sigyn has joined #lisp
Denommus has quit [Quit: restarting emacs]
<Shinmera>
pjb: SBCL does a lot of special-case transforms.
<Bike>
at least, it open codes mapcar so that (mapcar f ...) turns into a loop of (funcall f ...), and i think if f is a constant function it can inline that
EvW has joined #lisp
<beach>
It looks like a normal case of inlining to me.
<Bike>
pretty much
murii is now known as Murii
emacsoma` has quit [Ping timeout: 248 seconds]
_cosmonaut_ has quit [Ping timeout: 240 seconds]
<pjb>
Ok. that's great that such an optimization be implemented.
<Shinmera>
Other things have more interesting stuff going on with deftransform.
oleo has joined #lisp
jmercouris has joined #lisp
sjl has joined #lisp
Denommus has joined #lisp
zmt00 has joined #lisp
Denommus` has joined #lisp
vydd has joined #lisp
vydd has quit [Changing host]
vydd has joined #lisp
Denommus has quit [Ping timeout: 272 seconds]
mishoo has quit [Ping timeout: 260 seconds]
jfb4 has quit [Ping timeout: 248 seconds]
Denommus` has quit [Quit: rebooting]
EvW has quit [Ping timeout: 240 seconds]
jfb4 has joined #lisp
fikka has joined #lisp
smurfrobot has joined #lisp
EvW has joined #lisp
Cymew has quit [Remote host closed the connection]
Jesin has joined #lisp
neoncontrails has quit [Ping timeout: 256 seconds]
neoncont_ has joined #lisp
mathrick has joined #lisp
fikka has quit [Ping timeout: 256 seconds]
cro__ has quit [Read error: Connection reset by peer]
Cymew has joined #lisp
smurfrobot has quit [Remote host closed the connection]
ski_ is now known as ski
fikka has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
Cymew has quit [Ping timeout: 272 seconds]
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
attila_lendvai has joined #lisp
Cymew has joined #lisp
mishoo has joined #lisp
Cymew has quit [Ping timeout: 256 seconds]
JuanDaugherty has joined #lisp
Cymew has joined #lisp
flamebeard has quit [Quit: Leaving]
Cymew has quit [Ping timeout: 260 seconds]
ryanbw has quit [Ping timeout: 248 seconds]
svgDelux has quit [Ping timeout: 246 seconds]
BitPuffin|osx has joined #lisp
eudoxia has joined #lisp
Rawriful has joined #lisp
rippa has joined #lisp
nullman has quit [Ping timeout: 240 seconds]
nullman has joined #lisp
dec0n has quit [Read error: Connection reset by peer]
attila_lendvai has quit [Quit: Leaving.]
smurfrobot has joined #lisp
hattkunskapz has joined #lisp
<jmercouris>
I'm trying to develop a macro, but unfortunately, there are two variable length sections, normally I would use something like ,@rest but I can't see how that would work here:https://gist.github.com/07a0cbaedd4f0aebb8d05646c3397426
scymtym has quit [Ping timeout: 258 seconds]
<Bike>
(defmacro defparen (name lambda-list &body body) ...) seems fine to me
<Bike>
well, no idea about the innter html part
<jmercouris>
Bike: how would lambda-list work if there are a variable number of args
<jmercouris>
that's my question, will it treat (arg1 arg2) as one variable within the macro?
<Bike>
It's one value. A list.
<jmercouris>
Okay, that's what I wanted to clarify
<Bike>
(defmacro test (thing) `(quote ,thing)) (test (arg1 arg2)) => (ARG1 ARG2) no problem.
<jmercouris>
Ok, let me try writing it now, knowing this
<Bike>
How else could it work?
<jmercouris>
Yeah, I had this gap in my knowledge, I assumed it consumed every word as a new argument to the macro
<jmercouris>
I assume now it just consumes every sexp as a new arg? or am I wrong here?
FreeBirdLjj has quit [Remote host closed the connection]
smurfrobot has quit [Remote host closed the connection]
<Bike>
what is a word?
<jmercouris>
Hmm, yes, I'm not sure how to describe it in this context, so I'll just list the words in my example
<jmercouris>
so, defparen, namexy, help-contents I assumed were all words
<Bike>
symbols?
<jmercouris>
that would be individual "tokens" or whatever passed to the macro
<jmercouris>
ok, so here's another thought, what if I wanted to get at the individual arguments within the list, how would I do that?
<Bike>
it's a list. you use car, cdr, first, second, so on.
<jmercouris>
I don't actually need to do this, I'm just trying to improve my understanding of macros
<jmercouris>
Ah okay, so within the macro it is literally a list
karswell_ has joined #lisp
<Bike>
So you were worried that if you wrote (defmacro defparen (name lambda-list &body body) ...) and then tried (defparen foo (a b) ...), it would bind lambda-list to a, and body to (cons b ...)?
<Bike>
in other words, that it would just ignore what you wrote? that would be perverse.
orivej_ has joined #lisp
<jmercouris>
Bike: Yes, that is what I was thinking it would do
<jmercouris>
I guess I should have just tried it first, but I figured maybe there is something else I can learn as well by asking here
<phoe>
What's the practical difference between (defmacro foo (bar baz qux) ...) and (defmacro foo (bar (&rest baz) qux) ...)?
<Bike>
geez, the system isn't actively trying to fuck you over
orivej has quit [Read error: Connection reset by peer]
ahungry has joined #lisp
<Bike>
phoe: (foo a b c) doesn't work in the latter case, eg
<jmercouris>
I'm not saying the system is out to get me, but we don't exactly get a long 100% of the time :D
<jmercouris>
Bike: Do you have a repository of your code I can look at?
<Bike>
jmercouris: have you read PCL or something? i don't mean to be mean, but symbols are pretty fundamental and it worries me that you're so far into an involved program like a browser without knowing about them.
<Bike>
Mine? I'm Bike on github. I mostly work on clasp at the moment, though.
<jmercouris>
Bike: I've read it, the section about macros didnt really click with me
<jmercouris>
Bike: I actually consulted my notes from the book on Macros while thinking about this issue
FreeBirdLjj has joined #lisp
<Bike>
clasp and sicl. so drmeister/clasp and robert-strandh/sicl.
<jmercouris>
In terms of symbols, I'm hesitant to use the word because it feels like I use it in the wrong way every time I talk about it :D
Jesin has quit [Quit: Leaving]
dyelar has joined #lisp
<jmercouris>
I am well aware of what they are, I just avoid the term
<Bike>
that's like avoiding talking about integers, you know?
dyelar has quit [Client Quit]
<jmercouris>
It's hard for me to talk precisely
Mon_Ouie has quit [Ping timeout: 240 seconds]
<jmercouris>
The concepts are clear in my head, but some part of the interface head:mouth jumbles things up
<Bike>
Anyway here's a brief explanation of macros. Say the evaluator or compiler runs into the form (foo ...), as in a list where the first element is the symbol foo. It knows that there's a macro named by that symbol. To evaluate or compile the form, it looks up the macro function with that name, and calls it with two arguments: the form (foo ...), and the current environment. Then it proceeds recursively, evaluating or compiling, on the res
<Bike>
In other words macro functions are normal functions.
<jmercouris>
so a macro is a defun with some special syntax to output symbols?
<jmercouris>
and expand lists of symbols etc?
<Bike>
No. I didn't say that.
<jmercouris>
Okay so let me start over then
<jmercouris>
defmacro defines a function with some special name
<jmercouris>
the compiler knows of that function and looks it up when finding a symbol with a special name
<jmercouris>
all the arguments to the special macro function are the complete form body of the special named symbol
<jmercouris>
yes?
karswell_ is now known as karswell
<Bike>
The macro function gets two arguments. The first one is the form, the second one is the environment. defmacro arranges things so that it destructures the form into the lambda list you specify
<Bike>
Like, you know you can do (destructuring-bind (foo bar) '(1 2) (+ foo bar)) => 3, right?
FreeBirdLjj has quit [Ping timeout: 264 seconds]
<jmercouris>
I did not know that
<Bike>
okay... let me take a different tack here
<Bike>
Let's have a macro (defmacro my-let (var value &body body) `(let ((,var ,value)) ,@body))
<Bike>
so (my-let x 3 (+ x 7)) expands into (let ((x 3)) (+ x 7)), basically trivial.
<jmercouris>
yea, this so far I understand
rpg has joined #lisp
<Bike>
We can have (defun my-let-mf (form environment) (declare (ignore environment)) (destructuring-bind (var value &body body) (rest form) `(let ((,var ,value)) ,@body))
khisanth_ has quit [Ping timeout: 248 seconds]
<Bike>
my-let-mf is obviously just a normal function.
<Bike>
and if we do (my-let-mf '(my-let x 3 (+ x 7)) nil), we get (LET ((X 3)) (+ X 7)) same as the macro expansion.
<jmercouris>
Give me a second to process everything
<Bike>
my-let-mf essentially implements the macro function of the original my-let macro.
<jmercouris>
Ah, I get it
<Bike>
If you don't know destructuring-bind, we can be more verbose and write (let ((var (second form)) (value (third form)) (body (cdddr form))) `(let ...)) instead.
<Bike>
only list operations, in other words. no magic
<jmercouris>
yes, I understand now
<jmercouris>
Thank you for taking the time to explain it to me
<Bike>
As it happens we can also get the macro function explicitly, with (macro-function 'my-let). If we do (funcall (macro-function 'my-let) '(my-let x 3 (+ x 7)) nil) it returns the same as my-let-mf.
<Bike>
glad you get it
<jmercouris>
I have read PCL a couple times now actually, and this is the only time it has made sense to me how they actually work
dyelar has joined #lisp
lisp_guest has quit [Ping timeout: 264 seconds]
scymtym has joined #lisp
White_Flame has quit [Ping timeout: 272 seconds]
dddddd has joined #lisp
nalkri has quit [Ping timeout: 272 seconds]
fikka has quit [Ping timeout: 256 seconds]
attila_lendvai has joined #lisp
attila_lendvai has joined #lisp
attila_lendvai has quit [Changing host]
Achylles has joined #lisp
lisp_guest has joined #lisp
<beach>
Bike: Great explanation!
Tobbi has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Bike>
like most things about eval, it makes more sense once you've written eval
varjag has quit [Ping timeout: 272 seconds]
<beach>
Heh, indeed.
attila_lendvai has quit [Client Quit]
BitPuffin|osx has quit [Ping timeout: 264 seconds]
<jackdaniel>
(destructuring-bind (&key a b c) '(:a 3 :b 4 :c 6) …) ;is a nice way to destruct things too
Achylles has quit [Remote host closed the connection]
JenElizabeth has quit [Remote host closed the connection]
<jackdaniel>
right, I can't see it with ql:system-apropos
<jackdaniel>
but I don't have newest dist
<beach>
Me neither.
<jackdaniel>
just updated, still no cluffer
<beach>
OK, I should submit it then.
<jackdaniel>
did you make an issue on quicklisp-projects to add it?
<jackdaniel>
right
<beach>
I must have forgotten. It happens.
fikka has quit [Ping timeout: 256 seconds]
varjag has joined #lisp
Tobbi has joined #lisp
hattkunskapz has quit [Read error: Connection reset by peer]
rm8 has joined #lisp
<TMA>
is there a way to distinguish between a list and nonlist argument to format? ~:[ and ~@[ can be used for NIL/non-NIL test, but I would like to wrap ~{ so that it will not error on non-list e.g. in (format t "~{~s~}" 4)
<Fare>
quickref.quicklisp.org fails the usual way with uiop: it only looks at the first package, uiop/package.
<sjl>
I wish these autogenerated doc systems had a way to link to the actual docs, for people like me who take the time to write them
<sjl>
there's `:homepage` in ASDF's `defsystem`, maybe that's something that could be used
<jackdaniel>
sjl: I think it links whole README.md toplevel file – that might be a good place to point all the pointers
<sjl>
because if someone finds these "docs" for my stuff and thinks that's all there is, they're going to be disappointed https://i.imgur.com/5gebjQF.png
<pjb>
TMA: you can add a parameter: (format t "…" (listp foo) foo) and then dispatch on it with ~:[
<pjb>
TMA: otherwise you can always implement your own format specifier and call it with ~/
<TMA>
Bike: in my special case I have either a number or a list that gets printed via "~{~*~:{~*functor(~d, id(\"~a\"), [~{~*~@{id(\"~A\")~#[~:;, ~]~}~}])~%~}~}" -- the list prints fine, the number errors out. I would like to print the number with some other string (say "~S")
<beach>
sjl: I totally agree with you. I take the time to write the documentation, and this system ignores it. On top of that, it documents implementation details such as slots.
<Bike>
ok, pjb's got it then.
DeadTrickster has quit [Ping timeout: 272 seconds]
milanj has joined #lisp
<Shinmera>
sjl: Another problem with any system other than Staple is that it won't support custom definitions.
<TMA>
adding (listp ...) there is not an option, so the only thing is a custom format specifier
<sjl>
Shinmera: I don't know what a "custom definition" means in this context
<Shinmera>
Staple has a specific extension mechanism so your system can define additional constructs like Radiance's routes: https://shirakumo.github.io/radiance/#ROUTE%20RADIANCE-CORE%3ADOMAIN
<pjb>
TMA: why is it not an option?
<sjl>
honestly I feel like autogenerating html pages from docstrings is the least important part of documenting a system, but the part that people spend most of their effort on
<pjb>
TMA: Is your atom replacing the whole list?
<pjb>
sjl: parsing and introspecting the system is indeed the most important part.
<TMA>
pjb: because it is already nested in a ~@{ several levels deep
<sjl>
I'd rather read a usage guide that outlines the high-level design/API written on a napkin and scanned in as a jpeg than a fancy HTML page that just formats docstrings nicely
<Shinmera>
That's fine for you, but I frequently use the symbol index, and also refer other people to specific definitions in case questions come up.
<pjb>
TMA: yes, in that case your only choice is a specific format specifier. You can write it like ~? so that it takes "~{~*~:{~*functor(~d, id(\"~a\"), [~{~*~@{id(\"~A\")~#[~:;, ~]~}~}])~%~}~}" as parameter!
<Shinmera>
So it is very important to me that it can include any kind of definition.
<sjl>
Shinmera: sure. it's nice to have
Karl_Dscc has joined #lisp
<sjl>
pjb: I already have tools for parsing and instrospecting systems. Parsing is done by my Lisp implementation, and instrospecting via docstring lookup and jump-to-def in my editor.
<sjl>
what I *want* from authors is the high-level lay of the land. What are the user-facing parts of the system? How am I intended to interact with them?
<pjb>
sjl: then once you have that you need to decide on a generated format. Keep in mind pandoc to convert to other formats.
<pjb>
TMA: I don't remember if it's possible…ee
<sjl>
pjb: I'm saying that I don't care very much if authors generate some formatted output for their docstrings at all. I can look up the docstrings (or code) in my editor.
<sjl>
I would much rather them spend time giving me a view into the design of the system in their brain
Murii has joined #lisp
<pjb>
sjl: ok.
<sjl>
But that requires writing prose, not coding, which people often don't like to do
<Shinmera>
My question is why not do both
<_death>
sjl: right, it reminds me of the "any idiot can code" remark by Moon on the runtime experts panel.. but then, the authors of the doc tools aren't going to write the documentation for these 3K libraries, so they write a tool to help a little
hexfive has joined #lisp
<pjb>
TMA: I'm afraid you will have to make your format specifier very specific, by embedding the formats "~{~*~:{~*functor(~d, id(\"~a\"), [~{~*~@{id(\"~A\")~#[~:;, ~]~}~}])~%~}~}" and "~S" in it.
<sjl>
Shinmera: I mean, yeah if I can have my cake and also eat it, sure. I do both.
<pjb>
TMA: since you want to use it in a loop, you cannot pass those format strings as parameters using ~V,V/list-or-atom/
EvW has quit [Ping timeout: 246 seconds]
<sjl>
_death: the problem is that now we have a broken version of my docs competing with my actual docs in the google results :\
<pjb>
sjl: you should have stayed in the dark web :-)
<TMA>
pjb: It will do with a specific formatter. It would be more elegant to be more general, but the specific will be fine.
<pjb>
There's no way to take multiple arguments for a custom format specifier, contrarily to ~? which takes a format string, and any number of argument it needs for it.
<_death>
sjl: right, maybe it'd be a good idea to have an asdf property linking to the official documentation, and such systems can take it into account
smurfrobot has joined #lisp
smurfrobot has quit [Remote host closed the connection]
smurfrobot has joined #lisp
<sjl>
_death: yeah, it would be nice if ASDF had a `:documentation` property next to `:homepage`, `:bug-tracker`, etc
<sjl>
and if these autodoc systems would use that to just link to the real docs when they exist
<pjb>
it has :description and :long-description
<sjl>
catting out all the markdown files my documentation directory into a giant `:long-description` seems subpar
hhdave has quit [Ping timeout: 240 seconds]
<sjl>
especially when they contain screenshots, etc
fikka has joined #lisp
wigust has joined #lisp
<_death>
the quickref thingy also doesn't support package-inferred-systems style very well, for now
<_death>
(and maybe quicklisp projects are the right place for such tags, not asdf systems..)
<sjl>
_death: I mean, ASDF already has :bug-tracker. :documentation seems to be roughly the same kind of thing.
fikka has quit [Ping timeout: 240 seconds]
<_death>
sjl: ok, but :documentation is a bad name :)
<_death>
:manual would encourage people to write manuals :)
Poetichristmas is now known as Poeticode
<sjl>
:manual sounds reasonable
josemanuel has joined #lisp
ahungry has quit [Remote host closed the connection]
<Xach>
ASDF once supported arbitrary key/value properties, but it was purged.
<jmercouris>
Are you guys critiquing quickref?
<Shinmera>
Sort of, and sort of just your weekly "people don't document again" whine
<_death>
maybe the asdf mailing list (which I'm not currently reading..) is a good place for discussing such properties
ahungry has joined #lisp
<jmercouris>
Ah, but it feels so cathartic :P
orivej_ has quit [Ping timeout: 240 seconds]
<_death>
Shinmera: I think sjl came from the opposite site.. the one with people who document..
fikka has joined #lisp
smurfrobot has quit [Remote host closed the connection]
orivej has joined #lisp
<sjl>
I used to do a lot of Python (especially Django) which has a pretty good documentation culture, yeah
<_death>
I don't document my public libraries.. my excuse is that they're not expressly intended for public use..
Denommus has joined #lisp
Denommus` has joined #lisp
orivej has quit [Ping timeout: 248 seconds]
<Xach>
Hmm! I have a warning condition that is being signaled by someone else's code. Is there a nice way, without wrapping calls that might signal the warning, to neuter the warning by e.g. redefining the condition?
<Xach>
By "neuter" I mean not show any output, however that might be achieved.
Denommus has quit [Ping timeout: 272 seconds]
<_death>
is there an advice facility?..
<Xach>
No.
orivej has joined #lisp
u0_a166 has joined #lisp
<jmercouris>
speaking of advice facilities, how do those work?
<jmercouris>
what does it mean to "advise" a function, and how is it implemented in practice?
<Shinmera>
Advice is CLOS method combination for the poor.
<Xach>
jmercouris: it is a little like clos before/after/around methods, and it is implemented via indirection of some sort.
<Xach>
Like tracing
<jmercouris>
Xach: What do you mean by "tracing"?
<Shinmera>
CL:TRACE
<Xach>
jmercouris: when you trace a function, it is a specific case of advising something to show output before and after it is called.
<Xach>
Edi Weitz's regex coach app used LispWorks advice to build an app accessing the internals of the library without modifying the library. It looked like a cool example to me.
<jmercouris>
I see, is there built in support for this, or does every piece of software have to implement its own advice pattern?
<Xach>
jmercouris: it is an implementation-level feature. sbcl does not have it. many others do.
<Xach>
it is not standard and required. the interfaces vary from implementation to implementation.
<jmercouris>
I see, so it's not part of the core spec
<Shinmera>
You can write your own advice facility, but that will lose most of the point of it (being able to advise arbitrary functions)
<jmercouris>
Unless of course you are writing a platform that people will extend
<jmercouris>
in which case, your own platform functions are arbitrary functions for those are on your platform, and the point is still kept
<Xach>
I wish sbcl had some of the traditional bells and whistles like advice and stepping. (Maybe it has stepping now? I haven't checked.)
<u0_a166>
are you trying to write an interpreter or understand others?
<Xach>
jmercouris: if you're designing an interactive or extensible system, i think it would be interesting to study hooks and advice and such.
<_death>
I don't see it as obsoleted by CLOS, although there is certainly an overlap
<Shinmera>
Xach: SBCL has had STEP for a good long time
<jmercouris>
Xach: In fact I am
igemnace has joined #lisp
<Xach>
Shinmera: does it work?
<Shinmera>
Sure
<jmercouris>
that's why I asked that question about hooks the other day
<Xach>
Ok.
<Shinmera>
I've used it a couple of times, but usually it's cumbersome because it's too fine-grained.
<jmercouris>
u0_a166: Designing an interactive system, I'm not writing an interpreter
<Shinmera>
With SBCL's TRACE options you can simulate advice
<Shinmera>
Since there's before and aftter options.
<_death>
in Xach case it'd be around
<Xach>
Hmm!
<u0_a166>
in your function definitions you could have a slot for prolog and epilog hooks and a global flag for if inside a hook
<Fare>
Xach: hash-tables with systems as keys are this-a-way. subclasses of system are that-a-way.
<Xach>
And here I was thinking that you could add trace with advice, but not vice versa.
<_death>
I suppose you could set trace output or whatever to a broadcast in before, and restore it in after
<sjl>
huh, TIL about :wherein for sbcl's cl:trace
<Xach>
Fare: what is the context?
<jmercouris>
u0_a166: Do functions have slots? I thought they had only arguments?
<u0_a166>
that way when your function dispatcher dalls a function it could check hooks before calling, set the flag to not recurse infnitely, cal hook when needed...
<jmercouris>
Are functions objects in CL?
<Fare>
and the properties are deprecated but still haven't been removed yet, for backward compatibility
<_death>
jmercouris: everything is an object
<u0_a166>
whatever data structure your interpreter stores function definitions
<jmercouris>
_death: So, functions have slots?
<_death>
jmercouris: not all objects have slots
<Xach>
asdf kibo strikes again
<jmercouris>
_death: why not?
smurfrobot has joined #lisp
<Fare>
"<Xach> ASDF once supported arbitrary key/value properties, but it was purged."
<_death>
jmercouris: because that's the design.. there was a Lisp that took a CLOS-like system more pervasively called GOO.. maybe they have slots there
<_death>
jmercouris: for Common Lisp, the purpose was that you could have a CLOS-less subset of it and still be able to claim with a straight face that it's a Common Lisp
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
<Xach>
Fare: When PRIMARY-SYSTEM-NAME moved from ASDF/FIND-SYSTEM to ASDF/SYSTEM, it broke mgl-pax and part of named-readtables.
<_death>
jmercouris: but you can simulate slots using weak hash tables
<Fare>
Xach: does this go away after cleaning the .fasl cache?
<Fare>
Xach: if not, it's higher-priority
<Xach>
Fare: you mean that without loading from fasl, there is a symbol asdf/find-system:primary-system-name?
<Xach>
The code in mgl-pax has a reference to asdf/find-system:primary-system-name. I don't think that exists in ASDF 3.3.1 any more.
<Fare>
I mean that it's bad if a new ASDF breaks old mgl-pax fasls, but it's worse if mgl-pax can't load at all
neoncont_ has quit [Ping timeout: 264 seconds]
<Xach>
I don't think mgl-pax can load in sbcl 1.4.2 with asdf 3.3.1 under any circumstance outside of changing its code.
<Fare>
BTW, I sent PRs to melisgl early this year to fix some of his packages, but I don't think any were merged.
Jesin has quit [Quit: Leaving]
<Fare>
He didn't reply to email or twitter probing either.
neoncontrails has joined #lisp
<Shinmera>
Fare: So in qt-lib-generator when it needs to download the archives, it has to optionally load drakma and zip. I can't make these hard-dependencies because that would force them to be unnecessarily installed on many setups. However, since qt-libs needs to ensure the libraries are ready after it's been loaded, this optional loading of drakma might happen during a current load-op. Any advice on how to circumvent
<Fare>
after 6 months of neglect and no response, is it time to fork the repository?
Jesin has joined #lisp
turkja has quit [Ping timeout: 260 seconds]
<Fare>
Shinmera, not sure what the right thing is, here.
<Fare>
ASDF pretty much has a static model for system dependencies.
<jmercouris>
_death: Weak hash tables?
<Shinmera>
It seems to currently work on my system if I do a manual ql-dist:install of the dependency tree of the systems and then just asdf:load-system.
<Shinmera>
But since you said that's a "no-no" I'd be open to other approaches.
Cymew has joined #lisp
<Fare>
Typically things like loading are done outside of ASDF, in a setup script, or using Quicklisp or some such.
<phoe>
18:16 < jmercouris> Fare: What? How old are you?
* phoe
snorts
<jmercouris>
livejournal, I take it you are very old :P
<Fade>
are you trying to make the greybeards feel bad?
<jmercouris>
Absolutely not :D
<Fare>
I'm grateful to CL and the its community for all they brought to me, but I want things that can't reasonably be done in CL. I'm already enjoying (and cursing) actor programming in Gerbil, for instance. Or its module system.
CrazyEddy has quit [Read error: Connection reset by peer]
<Fare>
Xach: I suppose the examples define and export some symbols?
<u0_a166>
jmercouris, all communities have elders whether actually old or not. i don't know everyone either
<Fare>
what is interesting is that the error wouldn't appear if you only loaded that code once, but something about the system causes it to be loaded twice
<Fare>
"WARNING: Computing just-done stamp in plan NIL for action (ASDF/LISP-ACTION:PREPARE-OP "cl-portaudio-tests"), but dependency (ASDF/LISP-ACTION:LOAD-OP "cl-portaudio") wasn't done yet!"
CrazyEddy has joined #lisp
smurfrobot has quit [Remote host closed the connection]
ryanbw has joined #lisp
vibs29 has quit [Ping timeout: 248 seconds]
<jmercouris>
u0_a166: How long have you been around?
vibs29 has joined #lisp
<u0_a166>
a week or two
ryanbw has quit [Read error: Connection reset by peer]
<Fare>
I don't get this WARNING or what looks like your loading the asd file three times, when I run on ASDF 3.3.1
<jmercouris>
Wait a second
<jmercouris>
a Class is an object, and an object has a class?
<beach>
Yes.
<Shinmera>
Welcome to the MOP
<jmercouris>
Hmmm
<sjl>
Ouroboros Oriented Programming
<_death>
beach: what constitutes the class of nonobjects
<beach>
_death: Oh, many things. For example comments in source code, or the indentation of the lines in the source code of a function.
<Fare>
Xach: in any case, whatever is causing this loading of portaudio.asd 4 times (there was another time below the first build) and then triggering the WARNING about just-done is triggering an error latent in cl-portaudio-tests.
<beach>
_death: The time it takes to run a function.
<beach>
_death: The number of page faults.
pseudonymous has joined #lisp
<Fare>
My PR fixes the latent error, but not the underlying issue (maybe something in your quicklisp test infrastructure?)
<_death>
beach: it seems you take the concept out of context..
<beach>
_death: Not at all.
<Fare>
How does the test infrastructure invoke ASDF?
<beach>
_death: When people are questioned about the "everything" in "everything is an object", it always boils down to "every object is an object".
<Fare>
beach: non-objects are not "things".
zooey_ has joined #lisp
<Fare>
:-)
<beach>
Then we have a tautology as usual.
<_death>
beach: I think "any Lisp datum" passes "everything" given such a question
<_death>
*for
<Fare>
a place? it's not an object. A type? It's not an object. A continuation? What are you talking about?
<beach>
_death: Exactly, and "object" is defined to be a Lisp datum, so again we have "every object is an object".
<_death>
beach: right.. and that is why everything is an object
<Bike>
well actually, if you look at the original etymology, a number of page faults is definitely something the icelandic parliament could talk about, so it's a thing. [nods sagely]
zooey has quit [Ping timeout: 248 seconds]
<jmercouris>
Bike: What?
<beach>
_death: No "thing" and "Lisp datum" are not the same.
<jmercouris>
If anyone wants to answer this brief survey: how long have you been programming in common-lisp?
<_death>
beach: ok.. I don't like to quibble about such things anyway
<Fare>
jmercouris, thing is the judiciary council of free men judging a case. By extension, the case is the thing, or any potential topic for a case.
<jmercouris>
Fare: That didn't clarify it at all :D
<beach>
Bike: Indeed. And I have been to thingvedlir (or however it would be spelled in English).
nalkri has quit [Read error: Connection reset by peer]
<beach>
þingvedlir, maybe?
* beach
goes to look it up.
<Fare>
jmercouris, my first "real" code in CL was probably my patches to cliki and araneida. Or maybe fare-matcher. Some time in 2004 or before for sure.
<Bike>
Oh, really? Neat
<Bike>
Is that where the althing used to be, or the modern government structure? I guess the former is probably lost
<beach>
þingvellir, apparently.
<beach>
Yes.
<Bike>
jmercouris: the word "thing". it originally meant a kind of judicial council in germanic cultures. the icelandic parliament is still called the "Althing".
<Fare>
Bike: David D. Friedman wrote neat things about the Icelandic saga-era judicial system. And he recently published a book about judicial systems very different from ours.
<jmercouris>
Bike: Huh, that's strange, in modern german, it means thing
<Bike>
it means thing in english too. icelandic is kind of retro.
<jmercouris>
I don't speak old german, so I wouldn't know I guess
<beach>
German?
<jmercouris>
What about it?
<beach>
Never mind.
<jmercouris>
"ding" = thing
<beach>
Sure.
<Bike>
and yeah, i've read a lot of the old icelandic sagas. pretty weird structure. horse-eating.
<jmercouris>
they have a lot of d -> th transitions
* beach
goes to spend time with his (admittedly small) family.
<Bike>
see ya.
* jmercouris
scratches head in perplexion at conversation that unfolded
<Fare>
Xach: Could the multiple loading of cl-portaudio.asd be caused by the quicklisp restarts? That would explain it. I don't have a model though for this WARNING about just-done. Maybe along those restarts ASDF gets confused in the multi-stage session support?
nalkri has joined #lisp
varjag has quit [Ping timeout: 256 seconds]
LocaMocha has quit [Ping timeout: 248 seconds]
neoncontrails has quit []
Xal has quit [Ping timeout: 272 seconds]
fikka has joined #lisp
rpg has quit [Ping timeout: 256 seconds]
varjag has joined #lisp
Cymew has joined #lisp
Xal has joined #lisp
<Shinmera>
jmercouris: My earliest CL related commit seems to be from October of 2014.
Cymew has quit [Ping timeout: 264 seconds]
Cymew has joined #lisp
<sjl>
beach: thingvellir would be the anglicization
fikka has quit [Ping timeout: 268 seconds]
Cymew has quit [Ping timeout: 260 seconds]
shka has quit [Quit: Konversation terminated!]
orivej has quit [Ping timeout: 264 seconds]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
shka has joined #lisp
damke has joined #lisp
<Xach>
Fare: the session that produced that log does not use Quicklisp. it has an asdf search function that makes every project visible to asdf, but generally nothing else too unusual.
EvW has joined #lisp
damke_ has quit [Ping timeout: 264 seconds]
quazimodo has joined #lisp
orivej has joined #lisp
<jmercouris>
I'm having some issues with using ps:regex in parenscript
<jmercouris>
It seems that (ps:regex) does not actually eval it's arg, it can only handle strings
rgrau has joined #lisp
<Bike>
not that i'm ultra familiar with javascript, but i'm going to guess that ps:regex is duplicating javascript regex literals, rather than the regular constructor, which can hopefully be referred to like any other function call
Denommus` is now known as Denommus
<jmercouris>
Bike: You are correct
<jmercouris>
I was thinking of just doing new Regex('some regex string') to work around this
<jmercouris>
Kind of dumb that it doesn't eval the arg, it totally should, and then convert that to a literal
<Bike>
eval the arg as lisp?
<jmercouris>
yeah
<Bike>
i don't know if that comports with parenscript's usual evaluation rules.
mepian has joined #lisp
<Bike>
as a workaround, could you do (ps:lisp `(ps:regex ,...))
king_idiot has joined #lisp
<jmercouris>
That's getting a little too meta
<jmercouris>
I'm going to do this: (ps:new (-reg-exp regex-string regex-flags))
<jmercouris>
Thanks for your comment though, it spurred me in the right direction
<Fare>
Xach: well -- how do you iterate over systems? Are you invoking asdf once or multiple times? Any nested invocation?
QualityAddict has quit [Ping timeout: 264 seconds]
QualityAddict has joined #lisp
<Fare>
I find the multiple loading of the asd file weird. It ought to be loaded only once in the lisp image, unless it or a defssystem-dependency was modified.
Trystam has joined #lisp
Younder has joined #lisp
krwq has joined #lisp
Tristam has quit [Ping timeout: 260 seconds]
Trystam is now known as Tristam
Cymew has joined #lisp
<Xach>
Fare: i start a fresh session for each system. i work alphabetically by project and then alphabetically by system within that project. i don't clear fasl caches between systems but no two systems are loaded in the same session.
<Xach>
not directly, that is
vlatkoB has quit [Remote host closed the connection]
Cymew has quit [Ping timeout: 256 seconds]
Cymew has joined #lisp
<pjb>
_death: there are no non-object in lisp: all lisp data is first class lisp object, and each data has a class.
<_death>
pjb: right, that's what I meant when I said that in Lisp everything is an object.
specbot has quit [*.net *.split]
josh5tone has quit [*.net *.split]
Posterdati has quit [*.net *.split]
vhost- has quit [*.net *.split]
mood has quit [*.net *.split]
elts has quit [*.net *.split]
azrazalea has quit [*.net *.split]
elts has joined #lisp
DeadTrickster has joined #lisp
josh5tone has joined #lisp
Posterdati has joined #lisp
mood has joined #lisp
specbot has joined #lisp
vhost- has joined #lisp
azrazalea has joined #lisp
raynold has joined #lisp
Cymew has joined #lisp
fikka has joined #lisp
mepian_ has joined #lisp
mepian_ has quit [Client Quit]
<_death>
and if you want to represent Lisp source text, or running time, or number of page faults, then these would be objects as well
<_death>
since Lisp data is the universe of discourse when the question is asked: is everything an object?
rm8 has quit [Quit: i slep]
mepian has quit [Ping timeout: 256 seconds]
<_death>
and the glossary provides that any Lisp datum is an object
Cthulhux` has quit [Changing host]
Cthulhux` has joined #lisp
scymtym has quit [Ping timeout: 246 seconds]
nalkri is now known as GCHQ
Cymew has quit [Ping timeout: 272 seconds]
shka has quit [Remote host closed the connection]
GCHQ is now known as ambisinistrous
cess11__ has quit [Ping timeout: 260 seconds]
micro has quit [Ping timeout: 260 seconds]
cess11_ has joined #lisp
micro has joined #lisp
nullman has quit [Ping timeout: 248 seconds]
nullman has joined #lisp
earl-ducaine has quit [Remote host closed the connection]
earl-ducaine has joined #lisp
copec has quit [Quit: checkity check out.]
copec has joined #lisp
copec has quit [Remote host closed the connection]
copec has joined #lisp
<Fare>
Xach: for this log, did you concatenate multiple sessions? One to discover all the systems defined in that file, then one for each system?
scymtym has joined #lisp
Jesin has quit [Ping timeout: 240 seconds]
alexmlw has joined #lisp
<flip214>
Who could help me get more information about ELS 2018? Our HR needs some informations that are not on the website yet (don't know which ones, though); who could I send the questions to?
<Shinmera>
The mailing list that's linked
<Shinmera>
Or the webmaster, which is also linked.
<flip214>
Shinmera: okay, thanks a lot... can you tell me the fees of 2017? I guess that's the data they want to know.
Jesin has joined #lisp
<Shinmera>
No
<flip214>
thanks all the same!
Murii has quit [Ping timeout: 272 seconds]
krwq has quit [Remote host closed the connection]
<Younder>
That bot you have on this channel working?
<Shinmera>
There's at least a dozen bots here.
<Shinmera>
Which one are you talking about?
quazimodo has quit [Ping timeout: 240 seconds]
<Younder>
I can't remember, I have always assumed there was just one
<flip214>
Younder: I guess you think about minion?
<Younder>
flip214, Yes
<Shinmera>
There's minion, specbot, Colleen that I know of.
ahungry has quit [Remote host closed the connection]
<aeth>
What I do for things like this is #.(symbol-name '#:whatever-the-prefix-is-) because technically you can change how the reader case works to not upcase things. So this makes it into an upper case string at read time through the otherwise not very useful #. read eval feature
<Fare>
Xach: OK, I believe the build of influxdb is confused because cl-graph declares an absent file index.md, and this causes ASDF to think its build is incomplete
<aeth>
#.(symbol-name '#:whatever-the-prefix-is-) => "WHATEVER-THE-PREFIX-IS-" or "whatever-the-prefix-is-" depending on the readtable case
<aeth>
e.g. (let ((*readtable* (copy-readtable *readtable*))) (setf (readtable-case *readtable*) :preserve) (format t "~A~%" (read-from-string "hello")))
<oleo>
eheh
<aeth>
although, actually, that wouldn't help if they rebind the readtable like in that example, it would have to happen before the file is read, afaik
razzy_ is now known as razzy
shka has joined #lisp
scottj has left #lisp [#lisp]
ambisinistrous has quit [Ping timeout: 256 seconds]