jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | offtopic --> #lispcafe
jeosol has joined #lisp
curtosis[away] has joined #lisp
rjcks has quit [Quit: leaving]
ukari has quit [Remote host closed the connection]
thinkpad has quit [Ping timeout: 252 seconds]
ukari has joined #lisp
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
thinkpad has joined #lisp
thinkpad has quit [Ping timeout: 265 seconds]
thinkpad has joined #lisp
thinkpad has quit [Ping timeout: 268 seconds]
Oladon has quit [Quit: Leaving.]
thinkpad has joined #lisp
skapata has quit [Ping timeout: 260 seconds]
rick-monster has quit [Ping timeout: 240 seconds]
curtosis[away] has joined #lisp
Kaisyu has quit [Quit: Connection closed for inactivity]
thinkpad has quit [Ping timeout: 260 seconds]
thinkpad has joined #lisp
skapata has joined #lisp
rumbler31 has joined #lisp
thinkpad has quit [Ping timeout: 268 seconds]
rumbler31 has quit [Ping timeout: 260 seconds]
zaquest has quit [Remote host closed the connection]
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
gitgoood has joined #lisp
gitgood has quit [Ping timeout: 268 seconds]
hendursaga has quit [Remote host closed the connection]
hendursaga has joined #lisp
thinkpad has joined #lisp
zaquest has joined #lisp
logand``` has quit [Ping timeout: 260 seconds]
rumbler31 has joined #lisp
wxie has quit [Quit: wxie]
ikrabbe|2 has joined #lisp
ikrabbe has quit [Ping timeout: 246 seconds]
wxie has joined #lisp
skapate has joined #lisp
skapata has quit [Ping timeout: 246 seconds]
ikrabbe has joined #lisp
ikrabbe|2 has quit [Ping timeout: 240 seconds]
mindCrime_ has quit [Ping timeout: 268 seconds]
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
judson_ has joined #lisp
Sheilong has quit []
galex-713 has quit [Ping timeout: 248 seconds]
galex-713 has joined #lisp
ldbeth has joined #lisp
Codaraxis_ has joined #lisp
Codaraxis has quit [Ping timeout: 240 seconds]
_jrjsmrtn has joined #lisp
__jrjsmrtn__ has quit [Ping timeout: 248 seconds]
<beach> Good morning everyone!
Alfr has quit [Killed (sinisalo.freenode.net (Nickname regained by services))]
Alfr has joined #lisp
klltkr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Josh_2> Mornin' beach
technobean has joined #lisp
aeth has quit [Ping timeout: 268 seconds]
ldbeth has quit [Ping timeout: 240 seconds]
aeth has joined #lisp
sp41 has quit [Remote host closed the connection]
sjl has quit [Ping timeout: 265 seconds]
sjl has joined #lisp
msk has quit [Remote host closed the connection]
msk has joined #lisp
White_Flame has quit [Ping timeout: 240 seconds]
Bike has quit [Quit: leaving]
White_Flame has joined #lisp
thinkpad has quit [Ping timeout: 265 seconds]
<moon-child> (let ((quote 5)) (+ . '6))
waleee-cl has quit [Quit: Connection closed for inactivity]
<beach> Those are amusing.
<beach> Now try to get Emacs to recognize the role of every element of it.
thinkpad has joined #lisp
<beach> You should be able to write (let ('5)...)
<moon-child> ha
<moon-child> how about this one: (defun f (&key '5) quote)
Oladon has joined #lisp
White_Flame has quit [Ping timeout: 260 seconds]
aartaka has joined #lisp
<beach> Using #' is fun too, since FUNCTION can be used as a lexical variable as well.
contrapunctus has left #lisp ["Disconnected: closed"]
aartaka_d has quit [Ping timeout: 260 seconds]
<beach> (let ('5) (let (#'quote) function)) for instance. :)
ldbeth has joined #lisp
contrapunctus has joined #lisp
Josh_2 has quit [Ping timeout: 260 seconds]
ldbeth has quit [Ping timeout: 268 seconds]
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
torbo has quit [Remote host closed the connection]
contrapunctus has joined #lisp
Spawns_Carpeting has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
Spawns_Carpeting has joined #lisp
curtosis[away] has joined #lisp
<fiddlerwoaroof> (let ((quote 5)) (+ . '6)) is even valid emacs-lisp
<fiddlerwoaroof> Both of them are, in fact
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
<fiddlerwoaroof> (let ('5) (let (#'quote) (cons . #'quote)))
<beach> I guess in the spirit of the first example, I should have written (let ('5) (let (#'quote) (+ . #'6)))
<beach> Yes, stuff like that.
<fiddlerwoaroof> (let*('5 #'quote)(+ . #'quote))
<fiddlerwoaroof> This is how I'm going to write all my code from now on
<beach> Heh.
<fiddlerwoaroof> save characters
<no-defun-allowed> SLIME would print the lambda list of a mapping function I wrote as #'SEQUENCE.
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
mmmattyx has quit [Quit: Connection closed for inactivity]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
bitmapper has quit [Quit: Connection closed for inactivity]
contrapunctus has joined #lisp
srhm has quit [Quit: Konversation terminated!]
technobean has quit [Quit: ERC (IRC client for Emacs 26.3)]
rumbler31 has quit [Remote host closed the connection]
samebchase-6 is now known as samebchase-
rumbler31 has joined #lisp
marusich has joined #lisp
<beach> no-defun-allowed: That's a very good example of why I want something better than Emacs for writing Common Lisp code.
Oladon has quit [Quit: Leaving.]
<moon-child> that doesn't seem like a fundamental limitation of emacs though, only an incidental result of slime's implementation; no?
<beach> Sure. When I said "Emacs" I meant "Emacs + SLIME".
<beach> Sorry about that.
<fiddlerwoaroof> Hmm, the result there is from the implementation's printer, right?
<beach> That could be.
<fiddlerwoaroof> (princ-to-string '(function foo)) #| => "#'FOO" |#
<beach> Yes, I see.
<fiddlerwoaroof> It's fundamentally ambiguous whether the intention here is to print code or a list, as far as I can see
<beach> If you use the printer for everything, sure.
narimiran has joined #lisp
<fiddlerwoaroof> Yeah, I htink you need something like presentation types
<fiddlerwoaroof> Or the first argument to MAP
<beach> One could, for example, show the characters in the source code that defined the item to be printed.
<fiddlerwoaroof> Kent Pitman calls it something like "intentional types"
<beach> Then you would get the same representation as the programmer wanted when the code was written.
<fiddlerwoaroof> Yeah, that doesn't help when you're formatting the output of MACROEXPAND-1, though
<fiddlerwoaroof> It's the same problem as here: http://www.nhplace.com/kent/PS/EQUAL.html
<beach> True, but that use case I am willing to bet is not as frequent.
<fiddlerwoaroof> I'm not sure
<fiddlerwoaroof> I use tools like emacs' macrostep expander quite a bit when I'm trying to figure out what a macro does
<beach> Perhaps I am generalizing too much, but I almost never look at the result of a macro expansion.
skapate has quit [Ping timeout: 246 seconds]
<fiddlerwoaroof> Yeah, I suspect this is a workflow difference
<beach> I see macros the say I see function, i.e., as abstractions. Only when I write the macro itself would I be interested in how it expands.
<fiddlerwoaroof> When I decide that a macro was a bad idea, I usually MACROEXPAND-1 and replace the source with the expansion
<fiddlerwoaroof> then fix it
<beach> This is one reason why I made a rule that SICL macros should do a lot of syntax checking, so that conditions would be shown in terms of the macro call, rather than in terms of its expansion.
mrchampion has quit [Remote host closed the connection]
<fiddlerwoaroof> I think if you continue down that route, you end up writing macros that expand to CLOS objects
<beach> Not sure what you mean by "CLOS object", but if you mean "standard object" then that would be some very useless macros, since those are self-evaluating.
thinkpad has quit [Ping timeout: 240 seconds]
<beach> ... unless you implementation uses standard objects for conses and symbols, of course.
<sm2n> beach, correct me if I'm wrong, but that kind of syntax checking doesn't compose too well
<beach> sm2n: Can you elaborate on that?
<sm2n> i.e if I have a macro that expands into a macro, and the second macro has malformed syntax, the thrown error won't be in terms of the code I wrote
<contrapunctus> moon-child: `(let ((quote 5)) (+ . '6))` dafuq :o explain?
<sm2n> contrapunctus, '6 is expanded by the reader to (quote 6)
<sm2n> and (+ . (quote 6) is exactly (+ quote 6), which has quote bound lexically to 5 by the let
<sm2n> so it evaluates to 11
<beach> sm2n: Well, if the macro is meant to be used as an abstraction, it is usually clear what the different arguments stand for, so the syntax of those can then be checked. Perhaps not fully, but I am guessing a lot better than what is typically done.
<contrapunctus> sm2n: oh lol. Thanks.
raeda has quit [Read error: Connection reset by peer]
raeda has joined #lisp
varjag has joined #lisp
sauvin has joined #lisp
<sm2n> beach, I'm not sure how what you are saying applies to my scenario
<beach> That may be because I probably didn't quite understand it.
<sm2n> (defmacro bar (a b) ...) (defmacro foo () (bar baz)) (foo)
rogersm has joined #lisp
<sm2n> no matter how much syntax checking you have in bar, the error thrown won't be in (foo), because macroexpansion destroys that context
<fiddlerwoaroof> foo can't give a useful error message in terms of bar's input syntax, right?
<sm2n> yeah
<beach> sm2n: You are talking about errors signaled (not "thrown") at run time?
<fiddlerwoaroof> sorry, opposite, bar can't ... in terms of foo's ...
<sm2n> macroexpansion time, sorry I'm being loose with the terminology
<sm2n> (foo) will fail at macroexpansion time because (bar baz) is invalid syntax
<beach> Ah, yes, I see. That's the reason for another SICL rule, namely to report errors in terms of source expressions in context.
<sm2n> how do you accomplish that in this case?
rogersm has quit [Remote host closed the connection]
<beach> But your scenario is definitely not the one I was thinking of. In this case, my scenario would be the time when the macro FOO was written.
contrapunctus has left #lisp ["Disconnected: closed"]
Nilby has joined #lisp
<sm2n> I don't really think it's much of an issue because CL isn't conventionally written with deeply nested macros from what I can tell
<beach> There would be some highlight of the (BAR BAZ) expression with an indication that the number of arguments is wrong.
varjag has quit [Ping timeout: 240 seconds]
<beach> sm2n: That's probably true.
<fiddlerwoaroof> Racket's macroexpander is basically designed to solve this problem
<sm2n> I brought this up because this was the motivation for the racket people to move to syntax objects as the result of macroexpansion, which is close to what fiddlerwoaroof was implying by macroexpanding into CLOS objects
<fiddlerwoaroof> yeah
<fiddlerwoaroof> If you have mid-level macros that expand to standard objects, and high-level macros that expand the standard objects to conses, you can preserve all sorts of metadata
<sm2n> but that's because their whole thing is lots of deeply nested macros
<fiddlerwoaroof> Like types to use for static type checking
<beach> fiddlerwoaroof: I think I see what you mean now. Not that the expansion itself is a standard object, but something like (FOO <standard-object>). Yes?
<fiddlerwoaroof> Yeah
<beach> That's an interesting idea.
<fiddlerwoaroof> Or, (foo (bar)) and then bar expands to (foo #<standard-object>), which foo expands itself
<fiddlerwoaroof> Which can enable relatively safe code-walking without implementation support
<beach> Yes, I see. I need to give this idea some more thought.
<fiddlerwoaroof> I think reading your paper on SICL loop was the first time I thought of this idea
contrapunctus has joined #lisp
<beach> Because the clauses are represented as standard objects?
<fiddlerwoaroof> Yeah
<beach> I can see that, yes.
<fiddlerwoaroof> So, (expand-loop #<for-as-clause> #<termination-test>)
<fiddlerwoaroof> Would be the last layer of expansion
<beach> Sure, yes.
<no-defun-allowed> I think I was approaching something like that this morning to simplify code generation for a new project. It would use vectorised loads, stores and comparison operators, but my compiler would generate something like (load #<some policy representation> vector n), which would then be expanded using a generic function that the client would specialize.
<beach> I never thought about generalizing it to more mundane macros though. Food for thought. Thanks!
<beach> no-defun-allowed: Interesting.
<beach> Now I have something to contemplate today during breaks and such.
<no-defun-allowed> It's still very fuzzy though, and I've only written down a summary of the protocol for the rest of the project so far.
<moon-child> (aside: the above discussion of macros and abstraction makes me think that sigils are superior to namespaces. Imagine we use & for function values, % for macros and builtins, and $ for variables. Then the 'quote' symbol used by the ' reader macro cannot possibly collide with a local variable which is also named quote)
<no-defun-allowed> (The end goal is to make my regular expression compiler more modular, and allow the client to generate specialised scanning code, based on CPU features and/or any specific knowledge of the text to match.)
Lycurgus has quit [Quit: Exeunt]
booaa has joined #lisp
<fiddlerwoaroof> no-defun-allowed: if you need complex regular expressions to benchmark, this code here generates some amazing regular expressions: https://gitlab.common-lisp.net/rfc2822/rfc2822/blob/master/regex.lisp#L118
<no-defun-allowed> Terrifying.
<fiddlerwoaroof> I tried printing one out once to see why CL-PPCRE was taking so long to match something like "foo" <foo@bar.com>
<fiddlerwoaroof> The string version of the regex was like five screens long
<beach> fiddlerwoaroof: In Cleavir, we get some of the benefits of using standard objects in macros, in that the compiler manipulates CSTs rather than expressions, and after macro expansion, it reconstructs a CST from the original one and the expression returned by the macro expander.
booaa has quit [Ping timeout: 260 seconds]
<fiddlerwoaroof> Yeah
<fiddlerwoaroof> It's occasionally seemed to me that the distinction between a compiler and a macroexpander is sort of arbitrary
skapata has joined #lisp
<fiddlerwoaroof> They're both programs that take a datastructure that represents a program in one way and turn it into a datastructure that represents the same program in a different way.
<Nilby> If I'm remembering correctly I think agnostic-lizard uses a technique something like that, wrapping interim macro expansion in objects.
<fiddlerwoaroof> One interest I've had is trying to pull some of the traditional compiler stuff into the macroexpansion phase, because that phase has always seemed easier to think about (to me)
<beach> Yeah, that's a good idea, provided that errors and warnings can still be meaningful to the programmer.
<fiddlerwoaroof> Nilby: I believe I remember seeing something like that in the presentation on that tool
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rogersm has joined #lisp
frost-lab has joined #lisp
quanta[m] has joined #lisp
<fiddlerwoaroof> no-defun-allowed: can you re implementation efficiently merge two matchers?
<no-defun-allowed> Would you mind defining "merging"?
<no-defun-allowed> I use the derivative method, so I can do intersections on regular expressions.
<fiddlerwoaroof> Basically, I've had this sort of problem before: I have N regex-action pairs (think awk-style programs, or HTTP routing) and I want to pick an action doing as little work matching as possible
<fiddlerwoaroof> I think the derivative-style matching would work for this, now that I think about it
<no-defun-allowed> After testing, I can only conclude that submatching here is painfully broken.
* no-defun-allowed sighs and goes to plan another method for submatching.
thinkpad has joined #lisp
hjudt has joined #lisp
<contrapunctus> Would you folks recommend using Clostrum for sandboxing Lisp programs? Or is there another way? It seems like a complicated problem.
thinkpad has quit [Read error: No route to host]
Lord_of_Life has quit [Read error: Connection reset by peer]
<Shinmera> the only way is to either restrict the programs to the point of being useless, or running another process.
<Shinmera> or actually another OS, probably.
<fiddlerwoaroof> In theory, you could spawn another process and use the cgroups APIs to sandbox it
<fiddlerwoaroof> But what's possible here is entirely dependent on your threat model
Lord_of_Life has joined #lisp
thinkpad has joined #lisp
<beach> contrapunctus: It is not quite as simple as that. Let me explain...
<contrapunctus> fiddlerwoaroof: to be specific, I don't want the program to (unless the user permits them) make any network requests or access the filesystem outside of its private storage. (There's also some resource limiting.)
<beach> contrapunctus: To get the benefits of Clostrum, you need to be able to evaluate expressions "relative to" a Clostrum environment, so you need a specific evaluator.
Major_Biscuit has joined #lisp
<beach> contrapunctus: We have such an evaluator (obviously), but things are not set up for general use. Currently, it is used only in SICL bootstrapping.
flazh has quit [Ping timeout: 240 seconds]
<beach> contrapunctus: The existing evaluator turns a source file into a CST (using Eclector), and then the CST into an AST (using Cleavir) and then it uses the AST evaluator of SICL that does the job.
<beach> One day, I may turn these tools into something generally usable, but I don't have the time to do that now. Perhaps someone else would be interested in such a project.
thinkpad has quit [Ping timeout: 240 seconds]
thinkpad has joined #lisp
vegansbane6963 has quit [Ping timeout: 268 seconds]
aartaka_d has joined #lisp
tophullyte has quit [Quit: Leaving]
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #lisp
aartaka_d has quit [Ping timeout: 240 seconds]
<no-defun-allowed> As with most of the engine, I have no idea what I did exactly, but submatching appears to work properly now.
chipolux has joined #lisp
motersen has quit [Remote host closed the connection]
<contrapunctus> beach: I see. I feel quite sad when I think of how, on one hand, it's desirable to have programs in e.g. documents, and yet the state of sandboxing and resource limiting leaves much to be desired.
motersen has joined #lisp
chipolux has quit [Client Quit]
<beach> contrapunctus: I understand. I wish someone would take on the project I suggested. What you would like to see is something many people seem to want.
random-nick has joined #lisp
surabax has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
skapata has quit [*.net *.split]
ikrabbe has quit [*.net *.split]
emacsomancer has quit [*.net *.split]
frgo has quit [*.net *.split]
notzmv has quit [*.net *.split]
myall has quit [*.net *.split]
pyc has quit [*.net *.split]
shrysr_ has quit [*.net *.split]
plisp2 has quit [*.net *.split]
tgbugs has quit [*.net *.split]
luna_is_here has quit [*.net *.split]
sveit has quit [*.net *.split]
zigpaw107613 has quit [*.net *.split]
jello_pudding has quit [*.net *.split]
frodef has quit [*.net *.split]
ozzloy has quit [*.net *.split]
alanz has quit [*.net *.split]
Inoperable has quit [*.net *.split]
b20n has quit [*.net *.split]
rvirding has quit [*.net *.split]
antoszka has quit [*.net *.split]
theruran_ has quit [*.net *.split]
norsxa has quit [*.net *.split]
vydd has quit [*.net *.split]
ffwacom has quit [*.net *.split]
winny has quit [*.net *.split]
lowryder has quit [*.net *.split]
beach has quit [*.net *.split]
physpi has quit [*.net *.split]
jcowan has quit [*.net *.split]
aaronm04 has quit [*.net *.split]
cipherchess has quit [*.net *.split]
leo_song_ has quit [*.net *.split]
ggoes has quit [*.net *.split]
Ekho has quit [*.net *.split]
jackdaniel has quit [*.net *.split]
astronavt has quit [*.net *.split]
easye has quit [*.net *.split]
mgsk_ has quit [*.net *.split]
vegai has quit [*.net *.split]
SAL9000 has quit [*.net *.split]
Demosthenex has quit [*.net *.split]
isoraqathedh has quit [*.net *.split]
fitzsim has quit [*.net *.split]
ravndal has quit [*.net *.split]
jdz has quit [*.net *.split]
vaporatorius has quit [*.net *.split]
samebchase- has quit [*.net *.split]
johnjay has quit [*.net *.split]
_paul0 has quit [*.net *.split]
quazimodo has quit [*.net *.split]
aindilis has quit [*.net *.split]
shka_ has quit [*.net *.split]
jonatack has quit [*.net *.split]
Noisytoot has quit [*.net *.split]
MetaYan_ has quit [*.net *.split]
ineiros has quit [*.net *.split]
tomaw has quit [*.net *.split]
Colleen has quit [*.net *.split]
rigidus has quit [*.net *.split]
jrm has quit [*.net *.split]
ioa has quit [*.net *.split]
Xach has quit [*.net *.split]
terpri_ has quit [*.net *.split]
stylewarning has quit [*.net *.split]
dyelar has quit [*.net *.split]
gendl has quit [*.net *.split]
etimmons has quit [*.net *.split]
ms[m]1 has quit [*.net *.split]
motersen has quit [*.net *.split]
hendursaga has quit [*.net *.split]
ech has quit [*.net *.split]
cantstanya has quit [*.net *.split]
luckless_ has quit [*.net *.split]
zooey has quit [*.net *.split]
gxt has quit [*.net *.split]
maxwilliamson has quit [*.net *.split]
Aurora_v_kosmose has quit [*.net *.split]
madage has quit [*.net *.split]
e[m]2 has quit [*.net *.split]
agam_b[m] has quit [*.net *.split]
bonz060 has quit [*.net *.split]
loke[m]1 has quit [*.net *.split]
tweet[m] has quit [*.net *.split]
penguwin has quit [*.net *.split]
jackhill has quit [*.net *.split]
z0d has quit [*.net *.split]
cyberlard has quit [*.net *.split]
glamas has quit [*.net *.split]
Grue` has quit [*.net *.split]
Shinmera has quit [*.net *.split]
TMA has quit [*.net *.split]
rogersm has quit [*.net *.split]
infra_red[m] has quit [*.net *.split]
spal has quit [*.net *.split]
susam has quit [*.net *.split]
katco has quit [*.net *.split]
Papa has quit [*.net *.split]
conjunctive has quit [*.net *.split]
nightfly has quit [*.net *.split]
akkad has quit [*.net *.split]
mtd has quit [*.net *.split]
Lord_of_Life has quit [*.net *.split]
thinkpad has quit [*.net *.split]
sjl has quit [*.net *.split]
Codaraxis_ has quit [*.net *.split]
ukari has quit [*.net *.split]
nckx has quit [*.net *.split]
MightyJoe has quit [*.net *.split]
d4ryus1 has quit [*.net *.split]
alandipert has quit [*.net *.split]
hhdave has quit [*.net *.split]
Posterdati has quit [*.net *.split]
wooden has quit [*.net *.split]
noobineer has quit [*.net *.split]
perrier-jouet has quit [*.net *.split]
andreyorst has quit [*.net *.split]
karstensrage has quit [*.net *.split]
mathrick has quit [*.net *.split]
pranavats has quit [*.net *.split]
casual_friday has quit [*.net *.split]
Iolo has quit [*.net *.split]
froggey has quit [*.net *.split]
_death has quit [*.net *.split]
phadthai has quit [*.net *.split]
charles` has quit [*.net *.split]
devrtz has quit [*.net *.split]
paulj has quit [*.net *.split]
jmiven has quit [*.net *.split]
dnm has quit [*.net *.split]
XachX has quit [*.net *.split]
buoy49 has quit [*.net *.split]
yottabyte has quit [*.net *.split]
gingerale- has quit [*.net *.split]
midre has quit [*.net *.split]
kini has quit [*.net *.split]
Yardanico has quit [*.net *.split]
summerisle has quit [*.net *.split]
palter has quit [*.net *.split]
thonkpod has quit [*.net *.split]
dmiles[m] has quit [*.net *.split]
grobe0ba has quit [*.net *.split]
swflint has quit [*.net *.split]
gko has quit [*.net *.split]
felideon has quit [*.net *.split]
shenghi has quit [*.net *.split]
housel has quit [*.net *.split]
billstclair has quit [*.net *.split]
griffinbyatt has quit [*.net *.split]
teej has quit [*.net *.split]
jsatk has quit [*.net *.split]
beaky has quit [*.net *.split]
stux|RC-only has quit [*.net *.split]
moon-child has quit [*.net *.split]
no-defun-allowed has quit [*.net *.split]
rodentrabies has quit [*.net *.split]
MrtnDk[m] has quit [*.net *.split]
dieggsy has quit [*.net *.split]
Theora[m] has quit [*.net *.split]
asdflkj has quit [*.net *.split]
krjt has quit [*.net *.split]
malm has quit [*.net *.split]
matijja has quit [*.net *.split]
guaqua has quit [*.net *.split]
FennecCode has quit [*.net *.split]
dale has quit [*.net *.split]
bytesighs has quit [*.net *.split]
splittist has quit [*.net *.split]
grfn has quit [*.net *.split]
pent has quit [*.net *.split]
phoe has quit [*.net *.split]
mpontillo has quit [*.net *.split]
chrpape has quit [*.net *.split]
spxy has quit [*.net *.split]
avicenna has quit [*.net *.split]
mjl has quit [*.net *.split]
joga has quit [*.net *.split]
ski has quit [*.net *.split]
random-nick has quit [*.net *.split]
aeth has quit [*.net *.split]
sxmx has quit [*.net *.split]
mseddon1 has quit [*.net *.split]
xlei has quit [*.net *.split]
|3b| has quit [*.net *.split]
mgr_ has quit [*.net *.split]
drewc has quit [*.net *.split]
nmg has quit [*.net *.split]
grumble has quit [*.net *.split]
daniel1302 has quit [*.net *.split]
nydel has quit [*.net *.split]
edgar-rft has quit [*.net *.split]
cognemo has quit [*.net *.split]
troydm has quit [*.net *.split]
rixard has quit [*.net *.split]
ark has quit [*.net *.split]
femi has quit [*.net *.split]
Kabriel has quit [*.net *.split]
Ankhers has quit [*.net *.split]
kbtr has quit [*.net *.split]
docl has quit [*.net *.split]
tmf has quit [*.net *.split]
voidlily has quit [*.net *.split]
creat has quit [*.net *.split]
l1x has quit [*.net *.split]
simplegauss has quit [*.net *.split]
entel has quit [*.net *.split]
seisatsu has quit [*.net *.split]
CEnnis91 has quit [*.net *.split]
gaze__ has quit [*.net *.split]
GreaseMonkey has quit [*.net *.split]
mgsk has quit [*.net *.split]
larme has quit [*.net *.split]
Balooga has quit [*.net *.split]
lonjil has quit [*.net *.split]
dbotton has quit [*.net *.split]
idxu has quit [*.net *.split]
cpt_nemo has quit [*.net *.split]
lieven has quit [*.net *.split]
HiRE has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
jonathan- has quit [*.net *.split]
parisienne has quit [*.net *.split]
p_l has quit [*.net *.split]
Tordek has quit [*.net *.split]
jlpeters has quit [*.net *.split]
drmeister has quit [*.net *.split]
selwyn has quit [*.net *.split]
knobo has quit [*.net *.split]
fe[nl]ix has quit [*.net *.split]
sebboh has quit [*.net *.split]
Grauwolf has quit [*.net *.split]
jasom has quit [*.net *.split]
madand has quit [*.net *.split]
Odin- has quit [*.net *.split]
lukego has quit [*.net *.split]
raeda has quit [*.net *.split]
jerme_ has quit [*.net *.split]
pacon has quit [*.net *.split]
ccl-logbot has quit [*.net *.split]
tychoish has quit [*.net *.split]
himmAllRight17 has quit [*.net *.split]
aap has quit [*.net *.split]
joast has quit [*.net *.split]
jealousmonk has quit [*.net *.split]
justinmcp_ has quit [*.net *.split]
matthewcroughan has quit [*.net *.split]
SumoSud0 has quit [*.net *.split]
brass has quit [*.net *.split]
ft has quit [*.net *.split]
SlashLife has quit [*.net *.split]
keja_ has quit [*.net *.split]
aartaka has quit [*.net *.split]
hjudt has quit [*.net *.split]
frost-lab has quit [*.net *.split]
sauvin has quit [*.net *.split]
narimiran has quit [*.net *.split]
rumbler31 has quit [*.net *.split]
gabc has quit [*.net *.split]
natter has quit [*.net *.split]
samebchase has quit [*.net *.split]
eMBee has quit [*.net *.split]
vv8 has quit [*.net *.split]
elflng has quit [*.net *.split]
null_ptr has quit [*.net *.split]
amk has quit [*.net *.split]
albusp has quit [*.net *.split]
APic has quit [*.net *.split]
Adamclisi has quit [*.net *.split]
minion has quit [*.net *.split]
specbot has quit [*.net *.split]
wxie has quit [*.net *.split]
gitgoood has quit [*.net *.split]
Khisanth has quit [*.net *.split]
russell-- has quit [*.net *.split]
bmansurov has quit [*.net *.split]
armin has quit [*.net *.split]
kagevf has quit [*.net *.split]
kslt1 has quit [*.net *.split]
gabot has quit [*.net *.split]
jxy has quit [*.net *.split]
freshmaker666 has quit [*.net *.split]
mrspec has quit [*.net *.split]
luis has quit [*.net *.split]
nullheroes has quit [*.net *.split]
marusich has quit [*.net *.split]
kingcons_ has quit [*.net *.split]
Mandus has quit [*.net *.split]
CrazyEddy has quit [*.net *.split]
nitrix has quit [*.net *.split]
snits has quit [*.net *.split]
Cthulhux has quit [*.net *.split]
terrorjack has quit [*.net *.split]
conkker has quit [*.net *.split]
vsync has quit [*.net *.split]
zagura has quit [*.net *.split]
loke has quit [*.net *.split]
cg505 has quit [*.net *.split]
interruptinuse has quit [*.net *.split]
epony has quit [*.net *.split]
jeosol has quit [*.net *.split]
long4mud has quit [*.net *.split]
acolarh has quit [*.net *.split]
copec has quit [*.net *.split]
fourier has quit [*.net *.split]
rdd has quit [*.net *.split]
dilated_dinosaur has quit [*.net *.split]
cods has quit [*.net *.split]
ramus has quit [*.net *.split]
jurov_ has quit [*.net *.split]
saturn2 has quit [*.net *.split]
deltab has quit [*.net *.split]
getha has quit [*.net *.split]
hdasch has quit [*.net *.split]
hiredman has quit [*.net *.split]
fengshaun_ has quit [*.net *.split]
hvxgr has quit [*.net *.split]
mason has quit [*.net *.split]
datajerk has quit [*.net *.split]
zymurgy has quit [*.net *.split]
bkst has quit [*.net *.split]
eagleflo has quit [*.net *.split]
remexre has quit [*.net *.split]
lavaflow has quit [*.net *.split]
Juonu has quit [*.net *.split]
Ziemas has quit [*.net *.split]
HDurer has quit [*.net *.split]
ferada has quit [*.net *.split]
pok has quit [*.net *.split]
nopf has quit [*.net *.split]
Fade has quit [*.net *.split]
Major_Biscuit has quit [*.net *.split]
drdo has quit [*.net *.split]
_jrjsmrtn has quit [*.net *.split]
zaquest has quit [*.net *.split]
m00natic has quit [*.net *.split]
karlosz has quit [*.net *.split]
gigetoo has quit [*.net *.split]
hineios has quit [*.net *.split]
gpiero has quit [*.net *.split]
tessier has quit [*.net *.split]
lansiir has quit [*.net *.split]
borodust has quit [*.net *.split]
walex has quit [*.net *.split]
jgkamat has quit [*.net *.split]
caoliver has quit [*.net *.split]
rotty has quit [*.net *.split]
ChoHag has quit [*.net *.split]
Patternmaster has quit [*.net *.split]
jfb4 has quit [*.net *.split]
mood_ has quit [*.net *.split]
thermo has quit [*.net *.split]
quanta[m] has quit [*.net *.split]
kreyren has quit [*.net *.split]
dim has quit [*.net *.split]
mgxm has quit [*.net *.split]
mr_yogurt has quit [*.net *.split]
alfred188 has quit [*.net *.split]
sukaeto has quit [*.net *.split]
chewbranca has quit [*.net *.split]
arcontethegreat[ has quit [*.net *.split]
wigust has quit [*.net *.split]
gensym has quit [*.net *.split]
travv0 has quit [*.net *.split]
jmercouris has quit [*.net *.split]
ck_ has quit [*.net *.split]
rme has quit [*.net *.split]
cross has quit [*.net *.split]
fouric has quit [*.net *.split]
sgithens has quit [*.net *.split]
xristos has quit [*.net *.split]
madnificent has quit [*.net *.split]
em has quit [*.net *.split]
gabiruh has quit [*.net *.split]
shinohai has quit [*.net *.split]
sbryant has quit [*.net *.split]
msk has quit [*.net *.split]
anticrisis has quit [*.net *.split]
lawt has quit [*.net *.split]
ebrasca has quit [*.net *.split]
Krystof has quit [*.net *.split]
KeyboardWorrier has quit [*.net *.split]
zupss has quit [*.net *.split]
dunk has quit [*.net *.split]
diamondbond has quit [*.net *.split]
scymtym has quit [*.net *.split]
sm2n has quit [*.net *.split]
mister_m has quit [*.net *.split]
phantomics has quit [*.net *.split]
thecoffemaker has quit [*.net *.split]
Elzington has quit [*.net *.split]
cpape has quit [*.net *.split]
m0xya has quit [*.net *.split]
nullman has quit [*.net *.split]
MichaelRaskin has quit [*.net *.split]
IPmonger has quit [*.net *.split]
stux|RC has quit [*.net *.split]
xsperry has quit [*.net *.split]
X-Scale has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
ilmu has quit [*.net *.split]
mfiano has quit [*.net *.split]
surabax has quit [*.net *.split]
Nilby has quit [*.net *.split]
Spawns_Carpeting has quit [*.net *.split]
micro has quit [*.net *.split]
Alfr has quit [*.net *.split]
galex-713 has quit [*.net *.split]
dvdmuckle has quit [*.net *.split]
lottaquestions has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
maiqthefalse has quit [*.net *.split]
Nikotiini has quit [*.net *.split]
herlocksholmes has quit [*.net *.split]
azrazalea has quit [*.net *.split]
markasoftware has quit [*.net *.split]
orivej has quit [*.net *.split]
AdmiralBumbleBee has quit [*.net *.split]
jprajzne has quit [*.net *.split]
vhost- has quit [*.net *.split]
[df] has quit [*.net *.split]
add^_ has quit [*.net *.split]
mtd_ has quit [*.net *.split]
spacebat2 has quit [*.net *.split]
Gnuxie[m] has quit [Ping timeout: 276 seconds]
ThaEwat has quit [Ping timeout: 276 seconds]
GreaseMonkey has joined #lisp
froggey has joined #lisp
[df] has joined #lisp
Lord_of_Life has joined #lisp
diamondbond has joined #lisp
frost-lab has joined #lisp
thecoffemaker has joined #lisp
epony has joined #lisp
jeosol has joined #lisp
pent has joined #lisp
zooey has joined #lisp
hendursaga has joined #lisp
motersen has joined #lisp
cantstanya has joined #lisp
maxwilliamson has joined #lisp
gxt has joined #lisp
luckless_ has joined #lisp
ech has joined #lisp
madage has joined #lisp
Aurora_v_kosmose has joined #lisp
FennecCode has joined #lisp
Codaraxis has joined #lisp
theruran_ has joined #lisp
chewbranca has joined #lisp
pve has joined #lisp
jsatk has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
vegansbane6963 has joined #lisp
physpi has joined #lisp
stylewarning has joined #lisp
physpi has quit [Excess Flood]
parisienne has joined #lisp
norsxa has joined #lisp
drmeister has joined #lisp
conjunctive has joined #lisp
physpi has joined #lisp
hendursa1 has joined #lisp
X-Scale has joined #lisp
teej has joined #lisp
ChoHag has joined #lisp
entel has joined #lisp
frost-lab has quit [Changing host]
frost-lab has joined #lisp
theruran_ has joined #lisp
pent has joined #lisp
FennecCode has joined #lisp
pent has quit [Changing host]
FennecCode has quit [Changing host]
theruran_ has quit [Changing host]
jsatk has joined #lisp
stylewarning has joined #lisp
parisienne has joined #lisp
drmeister has joined #lisp
conjunctive has joined #lisp
physpi has joined #lisp
norsxa has joined #lisp
teej has joined #lisp
jsatk has quit [Changing host]
stylewarning has quit [Changing host]
drmeister has quit [Changing host]
parisienne has quit [Changing host]
conjunctive has quit [Changing host]
physpi has quit [Changing host]
norsxa has quit [Changing host]
teej has quit [Changing host]
Lycurgus has joined #lisp
thecoffemaker has quit [Ping timeout: 265 seconds]
ech has quit [Ping timeout: 240 seconds]
thecoffemaker has joined #lisp
ramHero has joined #lisp
attila_lendvai_ has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
contrapunctus has joined #lisp
Lycurgus has quit [Quit: Exeunt]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
ms[m] has joined #lisp
thinkpad has joined #lisp
walex has joined #lisp
Major_Biscuit has joined #lisp
5EXAABHZ9 has joined #lisp
SlashLife has joined #lisp
_jrjsmrtn has joined #lisp
zaquest has joined #lisp
karlosz has joined #lisp
m00natic has joined #lisp
hineios has joined #lisp
gigetoo has joined #lisp
thermo has joined #lisp
tessier has joined #lisp
gpiero has joined #lisp
lansiir has joined #lisp
caoliver has joined #lisp
borodust has joined #lisp
rotty has joined #lisp
jgkamat has joined #lisp
Patternmaster has joined #lisp
jfb4 has joined #lisp
mood_ has joined #lisp
Major_Biscuit has quit [Max SendQ exceeded]
Major_Biscuit has joined #lisp
vaporatorius__ has joined #lisp
m00natic has quit [Ping timeout: 260 seconds]
karlosz has quit [Quit: karlosz]
infra_red[m] has joined #lisp
dmiles[m] has joined #lisp
kreyren has joined #lisp
MrtnDk[m] has joined #lisp
Gnuxie[m] has joined #lisp
quanta[m] has joined #lisp
etimmons has joined #lisp
ThaEwat has joined #lisp
rodentrabies has joined #lisp
dieggsy has joined #lisp
e[m]1 has joined #lisp
tweet[m] has joined #lisp
katco has joined #lisp
no-defun-allowed has joined #lisp
loke[m] has joined #lisp
arcontethegreat[ has joined #lisp
Theora[m] has joined #lisp
susam has joined #lisp
agam_b[m] has joined #lisp
JCDentonreportin has joined #lisp
m00natic has joined #lisp
IPmonger has joined #lisp
kevingal has joined #lisp
ljavorsk has joined #lisp
vegansbane6963 has quit [Ping timeout: 245 seconds]
Lord_of_Life has quit [Excess Flood]
Lord_of_Life has joined #lisp
lotuseater has joined #lisp
klltkr has joined #lisp
vaporatorius__ has quit [Ping timeout: 252 seconds]
ech has joined #lisp
maxwilliamson has quit [Ping timeout: 240 seconds]
<ikrabbe> Good morning everyone
<no-defun-allowed> Good morning ikrabbe!
vegansbane6963 has joined #lisp
<ikrabbe> I often try to write macros that call functions from their arguments: (defmacro mac (x) `(,x y))
<ikrabbe> I can guard this call with fboundp of course (defmacro mac (x) `(if (fboundp ',x) (,x y))
<ikrabbe> ) but this only works for defun'ed objects, not for (labels ((x () )))) (does it work for (lambdas?))
<ikrabbe> Is their any way to check if ,x is a function defined by labels?
<lotuseater> or try with APPLY/FUNCALL
<no-defun-allowed> In the case of the MAC you wrote, the implementation will usually signal a WARNING at compile-time if the function is not bound, so you shouldn't have to worry about it.
<no-defun-allowed> Though I wonder if there is something you can do with the CLtL2 environment introspection extension which many implementations provide (given that FBOUNDP does not take an environment argument, but you can get an environment with that information from a macro).
vaporatorius has joined #lisp
vaporatorius has joined #lisp
vaporatorius has quit [Changing host]
logand has joined #lisp
<ikrabbe> I wonder that there is obviously no way to do it.
<ikrabbe> though possibly through environment introspection
<no-defun-allowed> ikrabbe: This implementation of MAC generates (redundant) warnings for unbound function names: https://plaster.tymoon.eu/view/2381
<no-defun-allowed> That might only work on SBCL, but I found a trivial-cltl2 system on Quicklisp which should be more portable.
<edgar-rft> A macro-lambda-list has an optional &environment parameter to look-up lexically bound functtions (flet, labels, etc.) but I have no clue how that works.
vegansbane6963 has quit [Ping timeout: 240 seconds]
<ikrabbe> no-defun-allowed: What I actually miss is a branch for cond, when I parse such arguments: (say "Good morning" (user 10))
<ikrabbe> (defmacro say (&rest x) (mapcar (lambda (o) (typecase o (sequence (if t `(,(car o) ,@(cdr o))) (print o)) (t (print o)))) x))
<ikrabbe> This is an error of course, as "Good morning" is a sequence also. I need a cond statement if (car o) is callable.
<no-defun-allowed> Would you not want to test for the LIST type instead of SEQUENCE? And then I suppose (equal `(,(car o) ,@(cdr o)) o)
heisig has joined #lisp
OlCe has joined #lisp
<ikrabbe> no-defun-allowed: list or sequence, the problem of the sequence can easily be overcome by deciding on strings before. My problem is still the missing condition.
attila_lendvai_ has quit [Ping timeout: 276 seconds]
ramHero has quit [Remote host closed the connection]
vegansbane6963 has joined #lisp
silasfox has joined #lisp
<no-defun-allowed> Are you trying to print at macroexpansion time? Local functions will not exist at compile time and cannot be called.
jeosol has quit [Quit: Connection closed]
frgo has joined #lisp
<ikrabbe> no, that was just too short, but I begin to understand, that I should define all callable functions for a macro expansion.
<edgar-rft> I just was going to say "why does that thing to be a macro at all when a function will do the same".
kevingal_ has joined #lisp
orivej has joined #lisp
<edgar-rft> *need* to be a macro...
kevingal has quit [Ping timeout: 245 seconds]
<ikrabbe> it does not need to be a macro. But then I need to call it as (say '("Good morning" (user 10)))
<ikrabbe> I just wanted to shorten the example
vegansbane6963 has quit [Quit: The Lounge - https://thelounge.chat]
<edgar-rft> It was not meant as a negative critic, I only wanted to know if there is some reason that I can't see from the example code. Writing macros needs to care a lot more about corner cases than writing functions, as you already found out youself :-)
<no-defun-allowed> Does it? You could write (defun say (&rest r) (mapcar #'print r)) to get (say "Good morning" (user 10)) to print "Good morning" then the result of (user 10)
ech has quit [Ping timeout: 240 seconds]
<ikrabbe> no-defun-allowed: actually print is just the test application. Depending on the situation I want (user 10) to be evaluated later. For the terminal it might be (print (user 10)), or in clim it could be (write-string (user 10)) or (present (user 10) 'username)
<ikrabbe> Here you can see the the present call is affected by the object.
<ikrabbe> when i do (defun say (&rest r)) the evaluation of (user 10) will likely be a string, but I lost the information that it is a user
<lotuseater> so you could use a struct or class for users :)
gareppa has joined #lisp
gareppa has quit [Remote host closed the connection]
mmontone has joined #lisp
galex-713 has joined #lisp
<mmontone> Hello. Does anyone know if there's a way of getting the list of packages loaded by a particular ASDF system?
<ikrabbe> lotuseater: I could do many things, but I want to decide what to do, when I know anything about the output medium. When I write such a say statement in a html context, I might want to link to a user account... and user is just a simple example of what is possible
galex-713 has quit [Ping timeout: 260 seconds]
<Xach> mmontone: packages or systems?
<lotuseater> ok
<mmontone> @xach I need the packages loaded by a particular ASDF system.
<Xach> mmontone: i don't believe there is any easy way. a system may cause other systems to load that define more and more packages that aren't directly loaded by that system.
<mmontone> I know it is probably not possible.
<Xach> mmontone: but you could look at interceding at certain points and comparing snapshots of (list-all-packages)
<mmontone> I thought perhaps there was some trick, like parsing ASDF system and files, or perhaps from swank information, but I don't think there's something. And I need it to be fast and lightweight, I don't want to trigger some file system processing or something like that, because I'm trying to implement an on-line documentation tool.
<Xach> mmontone: like looking through sources for defsystem forms?
waleee-cl has joined #lisp
<mmontone> Yes. But if there's better than that, I'd like to know :)
vegansbane6963 has joined #lisp
<mmontone> But I don't think so ...
<Xach> mmontone: i don't think there is any way aside from loading the asdf system and looking at the state of the package system.
<Xach> you could do that with a CL that has a hook to tell you when a new package is made.
<Xach> or any number of other hacks
<mmontone> I'm working with already loaded ASDF systems.
<mmontone> Yes..probably not possible. I was just asking just in case. Thanks for the input Xach.
rodriga has joined #lisp
<jcowan> *macroexpand-hook* is presumably the way to look for defsystems dynamically, but
<Xach> mmontone: another option is to look at the xref data for packages, and see if the source file is in a particular known system
<Xach> make-package complicates things
<mmontone> yes, that would be close. I could approach it like that ...
<jcowan> s/, but//
<mmontone> jcowan: I don't understand what you mean about *macroexpand-hook*
frost-lab has quit [Quit: Connection closed]
<mmontone> I'm using Emacs Info mode to display Common Lisp documentation on the fly.
<mmontone> I'm having some fun with this. There are nice possibilities.
<lotuseater> oh cool
<mmontone> Occurred to me when I was using slime completion to see what some package provided, and I couldn't see much from there, docstrings, etc. So I thought that was not the right way, there could be better ...
<lotuseater> i set *MACROEXPAND-HOOK* to NIL, just for the fun and look what it will say
aartaka has joined #lisp
g_SG has joined #lisp
Bike has joined #lisp
g_SG has quit [Ping timeout: 268 seconds]
rumbler31 has joined #lisp
galex-713 has joined #lisp
mmmattyx has joined #lisp
thinkpad has quit [Ping timeout: 258 seconds]
renzhi has joined #lisp
Aurora_v_kosmose has quit [Remote host closed the connection]
Aurora_v_kosmose has joined #lisp
5EXAABHZ9 has quit [Quit: Aloha!]
stux|RC has joined #lisp
thinkpad has joined #lisp
renzhi has quit [Ping timeout: 260 seconds]
galex-713_ has joined #lisp
galex-713 has quit [Ping timeout: 260 seconds]
thinkpad has quit [Ping timeout: 246 seconds]
thinkpad has joined #lisp
galex-713_ has quit [Ping timeout: 252 seconds]
narimiran has joined #lisp
wsinatra has joined #lisp
drl has joined #lisp
johnjay has joined #lisp
<drl> Why is this no longer working: (let ((target-email-address (concatenate 'string "to=" (getf record :e-mail))))
<drl> (uiop:run-program "/home/l/Downloads/thunderbird/thunderbird" (list "-compose" target-email-address)))
<drl> This works (from the command line): [~]% Downloads/thunderbird/thunderbird "-compose" "to=FortChicag@aol.com"
<Bike> in what way is it not working and what does target-email-address end up as
johnjay has quit [Ping timeout: 240 seconds]
<drl> Bike, I get "odd number of &KEY arguments" error.
<Bike> on what function
<Bike> wlel, it looks like run-program takes keyword arguments
<Bike> i think you might mean (uiop:run-program (list "/home..." "-compose" target-email-address))?
orivej has quit [Ping timeout: 240 seconds]
<drl> This was working until I upgraded to a new version of Thunderbird.
johnjay has joined #lisp
<Bike> i don't know what to tell you. as far as i can tell this is how run-program has worked since 2017
<_death> maybe drl "switched" from sb-ext to uiop, thinking they have the same interface
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
<drl> Bike, thanks. I'll check that out.
galex-713 has joined #lisp
<drl> _death, no, I didn't switch from sb-ext to uiop.
<phoe> (uiop:run-program "..." (list ...)) isn't a valid call though
<phoe> weird stuff if it worked
klltkr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
klltkr has joined #lisp
klltkr has quit [Client Quit]
<drl> Bike, what you said I might mean works. Thank you very much.
cantstanya has quit [Remote host closed the connection]
<drl> I don't remember making any changes, but maybe I did.
Josh_2 has joined #lisp
ramHero has joined #lisp
ljavorsk has quit [Ping timeout: 268 seconds]
drl has quit [Quit: Leaving]
cage_ has joined #lisp
thecoffemaker has quit [Ping timeout: 245 seconds]
johnjay has quit [Ping timeout: 260 seconds]
rumbler31_ has joined #lisp
thecoffemaker has joined #lisp
<rumbler31_> hey all, trying out ql:bundle-systems. I am trying to make a reproducible build of a local-project, and I've managed to make a bundle of its dependencies (but I can't seem to include the local-project itself). If I were to load the bundle.lisp, how do I then load the local-project without loading quicklisp?
johnjay has joined #lisp
gxt has quit [Ping timeout: 240 seconds]
logand has quit [Read error: Connection reset by peer]
<jackdaniel> rumbler31_: this function has a keyword argument include-local-projects
<rumbler31_> I see that now hehe
logand has joined #lisp
<rumbler31_> its still complaining that it can't find my local project
gxt has joined #lisp
logand has quit [Remote host closed the connection]
seok has joined #lisp
hypercube has joined #lisp
cosimone has joined #lisp
silasfox has quit [Quit: Connection closed]
hypercube has quit [Remote host closed the connection]
hypercube has joined #lisp
<rumbler31_> seems like a local-projects folder is being created in the bundle but the original local-project filde ris not being moved in. I'll see if I can debug that
galex-713 has quit [Ping timeout: 260 seconds]
<rumbler31_> I swear I did this exact same thing a moment ago but now its working for some reason
yitzi has joined #lisp
<rumbler31_> copying all of local projects seems excessive but I suppose the answer to that would be "patches welcome"
mrchampion has joined #lisp
<Xach> rumbler31_: there isn't an automatic way, but you could copy your local project into the bundle's local-projects directory.
<Xach> that is loaded automatically but does not involve quicklisp
<rumbler31_> I just did that and things seem to work. thanks!
<Xach> rumbler31_: glad to see a bundle user!
<rumbler31_> its been a while. used it at my last company to check in a source tree that my coworkers could rebuild with make. its been years so I'm standing that up again from whole cloth
<rumbler31_> but the bundle thing is the hardest work for sure haha
<rumbler31_> so thanks for that
semz has joined #lisp
froggey has quit [Ping timeout: 265 seconds]
ech has joined #lisp
froggey has joined #lisp
rixard has joined #lisp
wsinatra has quit [Ping timeout: 260 seconds]
skapata has joined #lisp
yitzi has quit [Quit: yitzi]
aartaka has quit [Read error: Connection reset by peer]
aartaka_d has joined #lisp
heisig has quit [Quit: Leaving]
<rumbler31_> does prefixing an as-of-yet-uninterned-sybol with #: prevent it from being interned?
<Bike> #:foo is read as a new symbol that is not interned in any package.
wsinatra has joined #lisp
<jcowan> rumbler31_: So if foo already exists, the new #:foo is distinct from it in the sense of eql.
waleee-cl has quit [Quit: Connection closed for inactivity]
DHARMAKAYA has joined #lisp
<rumbler31_> hmm ok
<rumbler31_> I'm kinda dumb right now. why is it a good practice to use that prefix when specifying, say, quicklisp packages to load. And also, whats the preferred library for doing things like copying files? UIOP?
<rumbler31_> and by the way thanks everyone for your help
<jdz> I use strings with Quicklisp.
judson_ has joined #lisp
<semz> Because it won't intern random symbols into your current package.
<jdz> But it basically boils down to interning arbitrary symbols in whatever package the user currently happens to be.
<beach> rumbler31_: More important than the random interning is that you send a clear signal to the person reading your code, that the package of the symbol is of no importance, and the only important thing is the name.
<remexre> If I want to define the same :around on a whole group of generic functions, what's the right way to do this? is there some mop trick, or am I better off just using macros
varjagg has joined #lisp
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<beach> mop method-generic-function
<beach> A method can be present on at most one generic function, so you have to make distinct methods.
skapata has quit [Remote host closed the connection]
slyrus has joined #lisp
<remexre> if I adjust my wording to, "define an :around on any generic function (that opts into it, perhaps with a special method combination?)" is that more possible?
<beach> I mean, you can certainly do all this programmatically. After all, the DEFMETHOD form expands to some calls to functions.
<beach> But it becomes messy because of MAKE-METHOD-LAMBDA.
<beach> So I would probably create a macro.
<remexre> okay, thanks
long4mud has joined #lisp
varjagg is now known as varjag
waleee-cl has joined #lisp
DHARMAKAYA has quit [Ping timeout: 240 seconds]
Major_Biscuit has quit [Quit: WeeChat 3.0.1]
ikrabbe has joined #lisp
<cage_> hi! why (cl-ppcre:split "\\n" (format nil "~2%s")): => ("" "" "s") but (cl-ppcre:split "\\n" (format nil "~2%")); => nil ?
<cage_> is this sort of a bug?
<jackdaniel> I once had a problem and I thought: I know, I will use regexps! Then I had two problems.
<rumbler31_> its not clear to me what the argument to asdf:system-weakly-depends-on should be. I've tried '#:project-name and "project-name"
<jackdaniel> weak dependencies are deprecated in asdf
supercoven has joined #lisp
<rumbler31_> er, then... the other, system-depends-on, that's the one I'm trying to use
<jackdaniel> try (asdf:system-depends-on (asdf:find-system "mcclim"))
gxt has quit [Ping timeout: 240 seconds]
<rumbler31_> jackdaniel: you're the best
mindCrime_ has joined #lisp
<jackdaniel> I know :)
<cage_> jackdaniel, :D
<rumbler31_> cage_: good question
yitzi has joined #lisp
yitzi has quit [Client Quit]
<rumbler31_> cage_: do you need to do that kind of split, or is this example code
<cage_> i have wrapped this code into a function named 'split-lines'
<cage_> just syntactic sugar and nothing more
gigetoo has quit [Ping timeout: 260 seconds]
gigetoo has joined #lisp
slyrus has quit [Remote host closed the connection]
<cage_> i have opened an issue report on github about that behaviour
slyrus has joined #lisp
Oladon has joined #lisp
<cage_> this is tangential, but i'd love if there was a discourse (web forum) instance about lisp, maybe hosted on common-lisp.net
tophullyte has joined #lisp
silasfox has joined #lisp
slyrus has quit [Ping timeout: 240 seconds]
tophullyte has quit [Remote host closed the connection]
phossil has joined #lisp
karlosz has joined #lisp
slyrus has joined #lisp
luckless_ has quit [Remote host closed the connection]
luckless_ has joined #lisp
mindCrime_ has quit [Ping timeout: 240 seconds]
wooden has joined #lisp
froggey has quit [Ping timeout: 260 seconds]
froggey has joined #lisp
<fiddlerwoaroof> cage_: if you don't actually need regular expressions, there's split-sequence
notzmv has joined #lisp
<fiddlerwoaroof> But, I can't think of why that behavior happens
g_SG has joined #lisp
Nilby has joined #lisp
judson_ has joined #lisp
<mfiano> No need for split-sequence if you're splitting strings. It's included in asdf
<fiddlerwoaroof> I don't like using utility functions in the ASDF package
<fiddlerwoaroof> Fortunately, there's also: (uiop:split-string)
<mfiano> That's what I was referring to
gitgood has joined #lisp
<cage_> fiddlerwoaroof, mfiano thank you!
<fiddlerwoaroof> It's interesting how all these split functions implement the keyword argument that limits the number of items in the return value differently
Kundry_Wag has joined #lisp
jeosol has joined #lisp
<fiddlerwoaroof> (cl-ppcre:split ":" "a:b:c" :limit 2) #| ==> ("a" "b:c") |#
<fiddlerwoaroof> (split-sequence:split-sequence #\: "a:b:c" :count 2) #| ==> ("a" "b") 4 |#
<fiddlerwoaroof> (uiop:split-string "a:b:c" :max 2 :separator '(#\:)) #| ==> ("a:b" "c") |#
<fiddlerwoaroof> in my experience, cl-ppcre's behavior is the one I usually want here
<fiddlerwoaroof> Actually, sorry, I want the behavior the version I wrote has
<fiddlerwoaroof> (fwoar.string-utils:split #\: "a:b:c" :count 2) #| ==> #("a" "b" "c") |#
<fiddlerwoaroof> the count counts the number of times the string is split, so the number of resulting elements is count+1
<fiddlerwoaroof> With the last element being "everything left"
froggey has quit [Ping timeout: 240 seconds]
<cage_> i agree is interesting
froggey has joined #lisp
m00natic has quit [Ping timeout: 245 seconds]
m00natic has joined #lisp
phossil has quit [Quit: Leaving]
tophullyte has joined #lisp
orivej has joined #lisp
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
judson_ has joined #lisp
judson_ has quit [Ping timeout: 258 seconds]
g_SG has quit [Ping timeout: 260 seconds]
bjth has joined #lisp
<rumbler31_> cage_: there is a discord, and I'm sure there's a slack
<rumbler31_> and a few subreddits
slyrus has quit [Remote host closed the connection]
karlosz has quit [Quit: karlosz]
slyrus has joined #lisp
<fiddlerwoaroof> If there's a slack, I've never heard of one
<fiddlerwoaroof> There's a room on matrix too
<rumbler31_> anyone experienced that uiop:copy-files actually moves files instead?
<rumbler31_> or rather doesn't actually copy.. but just deletes?
<remexre> is the point of boole that it might be calling out to like, a hardware blitter or something?
<cage_> rumbler31_, my very personal beliefs make me stay away from proprietary/surveillance platform, of course i hav eno problem if other find this platform useful but just they are not for me
<cage_> thanks by the way! :)
slyrus has quit [Ping timeout: 268 seconds]
<Nilby> remexre: Yes, but it can have other uses. For exmaple CLX uses the bool-* symbols as the drawing function in the graphics context.
<Nilby> One can do other interesting things with boole, like database bitmap index operations.
ukari has joined #lisp
<Xach> remexre: there is an interesting post on this topic
cosimone has quit [Remote host closed the connection]
<Xach> and the previous one as well
<Xach> (from the "prev" link)
cosimone has joined #lisp
<remexre> ok, thanks to both of you!
<Nilby> Xach: I'm so thankful you preserve those
<Nilby> That one also gives a good approach to understanding anything in CL.
<rumbler31_> anyone know why ensure-directories-exist would fail, when all but the last folder in the given path is created?
bjth has quit [Ping timeout: 260 seconds]
seok has quit [Quit: Connection closed]
<rumbler31_> even the uiop version fails
<rumbler31_> yup cuz it calls the same function with mapcar
g_SG has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
<Nilby> rumbler31_: But what is the error message? It can fail for many many reasons.
<rumbler31_> so there is no error thrown, which seems to be in disagreement with the spec
<rumbler31_> it just returns nil for created-p and the directories are never created
<mfiano> rumbler31_: ensure-directory-pathname is your friend
<rumbler31_> I sorely wish that ccl could bring back its debugging steping functionality
<mfiano> All but the last directory being created implies you are supplying a file pathname, so fix it with make-pathname or wrap it in the above
<rumbler31_> I'm not really sure what ensure-directory-pathname
<mfiano> Can you show me your call to ensure-directories-exist exactly?
<rumbler31_> (ensure-directories-exist "/home/user/quicklisp/local-projects/project/project-bundle/local-projects/project/" :verbose t)
Inline has joined #lisp
aeth has joined #lisp
hjudt has joined #lisp
ukari has quit [Remote host closed the connection]
Oladon has quit [Quit: Leaving.]
ukari has joined #lisp
lotuseater has quit [Remote host closed the connection]
mmontone has quit [Ping timeout: 240 seconds]
silasfox has quit [Ping timeout: 260 seconds]
<rumbler31_> i'm spending an inordinant amount of time getting common lisp to make a new directory and copy 3 files into it. sorry to gripe
luckless_ has quit [Remote host closed the connection]
<Nilby> One simple way to see what's actually happening, is to trace the systems calls using something like strace on linux or truss on bsd, so you can see what actual file system call might be failing.
skapata has joined #lisp
slyrus has joined #lisp
hypercube has quit [Ping timeout: 250 seconds]
slyrus has quit [Ping timeout: 268 seconds]
Alfr has joined #lisp
silasfox has joined #lisp
ljavorsk has joined #lisp
<rumbler31_> Nilby: So there's a lot of lstatting of the right paths, I don't understand enough to find the syscalls for copying files
slyrus has joined #lisp
ukari has quit [Remote host closed the connection]
ukari has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 265 seconds]
<Josh_2> just found a program breaking bug that was because I missed the : on my :initarg definition
<Josh_2> oof
Lord_of_Life_ is now known as Lord_of_Life
supercoven has quit [Ping timeout: 268 seconds]
bitmapper has joined #lisp
Spawns_Carpeting has joined #lisp
curtosis has joined #lisp
Lycurgus has joined #lisp
narimiran has quit [Ping timeout: 260 seconds]
mindCrime_ has joined #lisp
hypercube has joined #lisp
karlosz has joined #lisp
rogersm has joined #lisp
<rumbler31_> So uiop:copy-file gets the right args
wsinatra has quit [Quit: WeeChat 3.1]
aartaka has joined #lisp
aartaka_d has quit [Ping timeout: 240 seconds]
rtypo has joined #lisp
silasfox has quit [Ping timeout: 260 seconds]
silasfox has joined #lisp
<rumbler31_> it goes all the way down to two with-open-file macros and just copies the a buffer at a time into the output stream, and if
<rumbler31_> I knew it was something stupid I did
rodriga has quit [Ping timeout: 260 seconds]
curtosis is now known as curtosis[away]
terpri_ has joined #lisp
orivej has quit [Ping timeout: 268 seconds]
silasfox has quit [Ping timeout: 260 seconds]
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
Lycurgus has quit [Quit: Exeunt]
<rumbler31_> derp tried to make a bundle that didn't include quicklisp that includes a function to call quicklisp bundle.... dummy <-----
<rumbler31_> hmm I wonder how to fix that
<rumbler31_> I want to make a bundle of a project, I guess none of the functions I wrote depend on the original package
<rumbler31_> seems kinda hacky to just make another package that assumes things about another, like file paths and project names
rogersm has quit [Remote host closed the connection]
<rumbler31_> or I should use the term system
g_SG has quit [Ping timeout: 265 seconds]
<Nilby> Since Quicklisp can't really be an asdf or quicklisp dependency, then unless you always install it as part of your own installation, things have to check for it manually before using it.
<Nilby> My stuff can run with or without quicklisp, so I do a #+quicklisp in some places.
pve has quit [Quit: leaving]
thonkpod has joined #lisp
hypercube has quit [Ping timeout: 246 seconds]
<Bike> quicklisp is an asdf system, isn't it?
karlosz has quit [Quit: karlosz]
nullman has joined #lisp
White_Flame has joined #lisp
<Nilby> Yes, but I'm pretty sure one might get different results loading it in it's recommended way, vs. just asdf loading it.
rumbler31_ has quit [Ping timeout: 268 seconds]
cage_ has quit [Quit: Leaving]
froggey has quit [Ping timeout: 265 seconds]
froggey has joined #lisp
anticrisis has joined #lisp
easye has joined #lisp
Lord_Nightmare has joined #lisp
Alfr has quit [Quit: Leaving]
monaliza has joined #lisp
mindCrime_ has quit [Ping timeout: 240 seconds]
aeth_ has joined #lisp
aeth has quit [Disconnected by services]
aeth_ is now known as aeth
MichaelRaskin has joined #lisp
<monaliza> Heyo! I've recently learned common lisp and i've read a book about it, I've been kind of indecisive for which other vlafor of lisp i should start using next, because of how many flavours there are. I'm mostly really interested in functional programming, and I'm a real fan of haskell-ish syntax, where it's short, makes sense, and works rather well. I've heard about Racket lisp, Arc lisp, and Scheme,
<monaliza> and I'm getting mixed signals on which one I should try to extensively dive into first
<moon-child> monaliza: you are unlikely to get very many responses here, because this channel is specifically about common lisp. That being said: I would avoid arc. Racket and scheme are both nice enough, and you may also want to look at coalton
<monaliza> Ahh, I see
<monaliza> My fault for not reading the first word of the topic, I'm very sorry! And, thank you very much!
varjag has quit [Ping timeout: 252 seconds]
mindCrime_ has joined #lisp
kreyren has quit [Changing host]
kreyren has joined #lisp
kreyren has quit [Changing host]
kreyren has joined #lisp
<kagevf> use CL so you have the flexibility to take advantage of other styles when FP isn't a good fit
<kagevf> also, if you want FP only no matter what, maybe consider clojure ... with the caveat that it's on the jvm
<kagevf> and a syntax that has departed a bit from Lisp and Scheme
<moon-child> didn't some schemes also adopt the [] syntax?
<moon-child> I guess clojure also has {} for--hashtable literals, I think?
<kagevf> I think you're right, moon-child but IDK for sure
Aurora_v_kosmose has quit [Ping timeout: 240 seconds]
curtosis[away] has joined #lisp
Alfr has joined #lisp
hjudt has quit [Ping timeout: 268 seconds]
hypercube has joined #lisp
Aurora_v_kosmose has joined #lisp
m00natic has quit [Ping timeout: 240 seconds]
gitgood has quit [Remote host closed the connection]
m00natic has joined #lisp
curtosis[away] has quit [Quit: My Mac Mini has gone to sleep. ZZZzzz…]
mindCrime_ has quit [Ping timeout: 240 seconds]
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
Aurora_v_kosmose has quit [Remote host closed the connection]
terpri_ has quit [Quit: Leaving]
terpri_ has joined #lisp
Aurora_v_kosmose has joined #lisp
tophullyte has quit [Ping timeout: 260 seconds]
tophullyte has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
frgo has quit [Remote host closed the connection]
raeda has joined #lisp
frgo has joined #lisp
<no-defun-allowed> m00natic: IIRC {} and [] in Scheme produce equivalent syntax to (), so you could write (let ([x 1]) x) in Scheme or even [let [[x 1]] x]
<moon-child> no-defun-allowed: wrong moon :)
<no-defun-allowed> Oh dear.
<moon-child> seems chicken does exactly as you say, guile doesn'tlike {}, and s7 doesn't like either
Kundry_Wag has quit [Remote host closed the connection]
<sm2n> racket considers [] and () equivalent
Kundry_Wag has joined #lisp
<edgar-rft> the beatiful thing with Scheme is that there are so many *different* syntax schemes you can choose from
karlosz has joined #lisp
luckless has joined #lisp
srhm has joined #lisp
aartaka_d has joined #lisp
aartaka has quit [Ping timeout: 240 seconds]
<kagevf> in CL could you write a reader macro to do the same thing? to make [] and {} act like ()?
<fiddlerwoaroof> yeah, they even exist
<kagevf> ok, that's what I thought ... do they exist as part of the standard, or in a library?
<fiddlerwoaroof> There's also things like this that port the good bits of Clojure's syntax: https://github.com/joinr/clclojure/blob/master/reader.lisp
<fiddlerwoaroof> The standard reserves [] and {} for the use of the user
<fiddlerwoaroof> iirc
<kagevf> I see
<fiddlerwoaroof> So, technically, libraries aren't supposed to use these characters in the standard readtable
<fiddlerwoaroof> However, libraries are free to provide their own readtables, and named-readtables exists to make that process nicer
<fiddlerwoaroof> Also, personally, I tend to think "whatever a library can do should be left out of the standard as much as possible"
<kagevf> makes sense
Inline has quit [Ping timeout: 260 seconds]
aartaka has joined #lisp
Kundry_Wag has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
aartaka_d has quit [Ping timeout: 240 seconds]
c7s has joined #lisp
aartaka has quit [Ping timeout: 240 seconds]
rumbler31 has quit [Remote host closed the connection]
ljavorsk has quit [Ping timeout: 240 seconds]
rumbler31 has joined #lisp
mindCrime_ has joined #lisp