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
davepdotorg has joined #lisp
davepdotorg has quit [Ping timeout: 240 seconds]
Fare has quit [Ping timeout: 240 seconds]
Fare has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
dbotton has joined #lisp
dbotton__ has quit [Ping timeout: 260 seconds]
notzmv has quit [Remote host closed the connection]
iissaacc has quit [Ping timeout: 265 seconds]
Oladon has quit [Quit: Leaving.]
mathrick has joined #lisp
gxt has quit [Remote host closed the connection]
Steeve has quit [Quit: end]
gxt has joined #lisp
mathrick has quit [Ping timeout: 256 seconds]
nckx has quit [Ping timeout: 256 seconds]
dbotton has quit [Quit: -a- Connection Timed Out]
dbotton has joined #lisp
mathrick has joined #lisp
orivej has quit [Ping timeout: 265 seconds]
orivej_ has joined #lisp
Oladon has joined #lisp
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
dominic34 has joined #lisp
edgar-rft has joined #lisp
EvW has quit [Ping timeout: 244 seconds]
orivej_ has quit [Ping timeout: 258 seconds]
ex_nihilo has joined #lisp
karlosz has quit [Quit: karlosz]
davepdotorg has joined #lisp
arpunk has quit [Remote host closed the connection]
davepdotorg has quit [Ping timeout: 256 seconds]
arpunk has joined #lisp
drl has joined #lisp
jesse1010 has quit [Ping timeout: 260 seconds]
luis has quit [Remote host closed the connection]
luis has joined #lisp
<drmeister> I got on my hobby horse about the wonders of Common Lisp and the relative efficiency of languages on Hacker News... https://news.ycombinator.com/item?id=24642134#24644983
<drmeister> Some of it might amuse folks here.
davepdotorg has joined #lisp
<drmeister> “For what do we live, but to make sport for our neighbors, and laugh at them in our turn?” - Jane Austen
karlosz has joined #lisp
davepdotorg has quit [Ping timeout: 240 seconds]
luis has quit [Quit: Ping timeout (120 seconds)]
luis has joined #lisp
skapata has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
<bhartrihari> In Table 2 of he linked article, it's interesting that they put Rust in Object Oriented paradigm, but not Lisp.
<bhartrihari> s/he/the
<no-defun-allowed> It's generally acknowledged that words don't mean anything.
<no-defun-allowed> Lisp is in the "VM" category of implementations, which is utter bullshit as well.
<no-defun-allowed> I couldn't find what implementations were used for any of the tests, but maybe I'm not looking hard enough.
Alfr_ has joined #lisp
phantomics has joined #lisp
Oladon has quit [Quit: Leaving.]
Alfr has quit [Ping timeout: 240 seconds]
Lord_of_Life_ has joined #lisp
<no-defun-allowed> The implementation list is at the bottom of https://sites.google.com/view/energy-efficiency-languages/setup.
<bhartrihari> no-defun-allowed: Benchmarks Game uses SBCL 2.0.8.
<bhartrihari> (On their website)
<no-defun-allowed> bhartrihari: Sure, but AFAICT the authors of that paper did their own experiments with their own software.
<bhartrihari> I see.
Lord_of_Life has quit [Ping timeout: 272 seconds]
Lord_of_Life_ is now known as Lord_of_Life
kreyren has joined #lisp
<kreyren> How can i execute a file using ecl ?
<kreyren> x.x
<kreyren> meaning i have a hello world file with .cl extension that i want to invoke through ecl
bilegeek has quit [Quit: Leaving]
borei has joined #lisp
<no-defun-allowed> ecl --load foo.cl?
<drmeister> kreyren: (load "hello-world.cl")
<aeth> kreyren: man ecl suggests --load or --shell
<borei> good afternoon/good morning.
<kreyren> no-defun-allowed, > ;;; Loading "/home/kreyren/test.cl" < does not show `hello`
<kreyren> checking
<no-defun-allowed> What's in test.cl that would make it show hello?
<kreyren> drmeister, drmeister that also doesn't run it
<kreyren> kreyren@leonid:~$ cat test.cl | ix
<kreyren> no-defun-allowed,
<kreyren> also this is run in cargo-make so i ideally need to provide an argument
<no-defun-allowed> Yes, that won't print "Hello" unless evaluated from a REPL.
<kreyren> no-defun-allowed, elaborate?
<no-defun-allowed> Try (print "Hello") -- LOAD won't print the results of what it evaluates. Also what's cargo-make?
<kreyren> no-defun-allowed, cargo-make https://github.com/sagiegurari/cargo-make
<borei> working on the logging library, file logging pretty much completed, was trying to log to local syslog, but found that i can't write to "/dev/log" socket.
<beach> Good morning everyone!
<no-defun-allowed> kreyren: Mother of McCarthy...
<drmeister> kreyren: My instructions assumed that you had already started ecl using: ecl and you have the > prompt.
<drmeister> Say you have a hello-world.cl that looks like:
<kreyren> checking
<drmeister> Ok - I effed it up by missing a parenthesis. Darn my hide.
saganman has joined #lisp
<kreyren> using the `(print "Hello")` works, but i need ecl to run it and exit true unless specified otherwise where using `ecl --load file` starts an interactive session
<no-defun-allowed> borei: /dev/log is a Unix socket and not a file. I can't remember if there are libraries for working with Unix sockets though.
davepdotorg has joined #lisp
<no-defun-allowed> kreyren: You can add (sys:quit) at the end of the file to make ECL quit after evaluating the rest.
<kreyren> no-defun-allowed, that still outputs `;;; Loading "/home/kreyren/test.cl"`
<kreyren> which is unwanted as i want to use it as a part of a backend to compile the software cross-platform
<no-defun-allowed> ecl -q --load foo.cl
<no-defun-allowed> Oh, just do ecl --shell foo.cl instead
<kreyren> leaves unwanted space https://i.imgur.com/dBZik8X.png
<kreyren> no-defun-allowed, also leaves unwanted space (ecl --shell foo.cl)
borei has quit [Ping timeout: 244 seconds]
<no-defun-allowed> Well, do you want the quotes as well? If not, (write-line "...") will just write a line.
davepdotorg has quit [Ping timeout: 240 seconds]
<kreyren> no-defun-allowed, perfect! thanks ^-^
borei has joined #lisp
<borei> too tight to sbcl, good for now, but can be a bit restrictive later
Jeanne-Kamikaze has joined #lisp
Codaraxis has joined #lisp
<borei> hmmm, there is no sb-bsd-socket package definition
<borei> am i missing something ?
sts-q has joined #lisp
mindCrime_ has quit [Ping timeout: 240 seconds]
mindCrime_ has joined #lisp
diamondbond has quit [Ping timeout: 260 seconds]
<borei> any suggestion is more then welcome
<borei> interesting, it was working before, in sbcl 2.0.4, but got broken in 2.0.8
_whitelogger has joined #lisp
davepdotorg has joined #lisp
davepdotorg has quit [Ping timeout: 264 seconds]
sts-q has quit [Ping timeout: 240 seconds]
gravicappa has joined #lisp
mrchampion has joined #lisp
jibanes has quit [Ping timeout: 240 seconds]
jibanes has joined #lisp
Oladon has joined #lisp
mindCrime_ has quit [Ping timeout: 240 seconds]
Bike has quit [Quit: Lost terminal]
nckx has joined #lisp
<akoana> borei: there is sb-posix:syslog
<kreyren> How can i execute `(write-line "...")` through ecl subshell? where the usage is http://ix.io/2zl4 trying to adapt the code base to work on as many turing complete systems as possible
<borei> non of the contrib package can be found in my system
<akoana> borei: example: (sb-posix:syslog 1 "test message ~d from sbcl" 42) ;; 1 is the priority
<no-defun-allowed> Why are you using ECL...to script...um...something to do with Makefiles and Rust?
<no-defun-allowed> (And, what makes you think it's more portable than CPython or the POSIX shell?)
benjamin-l has joined #lisp
Aurora_v_kosmose has quit [Quit: Пока, мир.]
<borei> sorted out issue with packages they need to be "required" first :-)
Aurora_v_kosmose has joined #lisp
<kreyren> no-defun-allowed, because i want to use rust to mess with it's embedding project for my weird implementation of bedrock linux-inspired project in something more production ready where the Makefile and cargo-make are using shell for scripting of repository management
jibanes has quit [Ping timeout: 240 seconds]
<no-defun-allowed> I thought in Rust they used one too many commas to delimit things, but here you are with none.
<kreyren> no-defun-allowed, > or the POSIX shell? < -- Because systems from 1971 usually only have bourne shell (bsh) without a good way to get POSIX sh
<kreyren> and i hate python~
<kreyren> no-defun-allowed, eh? O.o
<no-defun-allowed> An off-topic joke, though I need some time to parse that.
<kreyren> o.o
<kreyren> any relevant info to the implementation is appreciated btw ^-^
<no-defun-allowed> I don't have any information, I'm just really confused right now.
jibanes has joined #lisp
<kreyren> o.o
<kreyren> what about
<no-defun-allowed> It seems very, very unlikely that you are going to run Common Lisp (via ECL) or Rust code on systems from 1971.
<kreyren> from my point of view i don't see why ECL is a problem there and Rust is the challenging part as it's embedding could use some work
<no-defun-allowed> ECL uses C99, which probably wouldn't have any compilers targeting or running on a 70s machine. (Well, someone with too much free time probably did write one, but I haven't heard of it.)
<kreyren> no-defun-allowed, what do you suggest then?
<no-defun-allowed> Finding a language that would run on such a machine.
<kreyren> no-defun-allowed, i though that lisp is that language O.o apparently people who use legacy systems are using lisp on them
<no-defun-allowed> Not Common Lisp.
<kreyren> ecl apparently
<no-defun-allowed> Definitely not ECL if you don't have a C99 compiler.
<kreyren> no-defun-allowed, is there anything more portable then ECL in terms of lisp then?
<no-defun-allowed> I can't think of any implementation that would support an older C compiler, or would fit in memory on an old machine.
luckless_ has quit [Ping timeout: 240 seconds]
slyrus has quit [Read error: Connection reset by peer]
<kreyren> x.x
<kreyren> like elisp works there..
<kreyren> but that seems as terrible implementation
<no-defun-allowed> You can run GNU Emacs on a machine from 1971?
<kreyren> no-defun-allowed, yes #emacs keeps telling me that when i am researching for emacs contribution that there are grandmas and grandpas capable of hiring a hitman that if i broke GNU Emacs on their system
<kreyren> apparently that happend but no source was provided O.o
<no-defun-allowed> I must really have a bad grip on time; GNU Emacs was released 14 years after the machine you have in mind.
<kreyren> which is why GNU Emacs is using bsh for the repository management and compilation as i was told
<kreyren> no-defun-allowed, i was told that these people contributed to it to make it work on their systems
<no-defun-allowed> That also seems very, very unlikely.
<kreyren> apparently using that a frontend to their system
<loke> What system are you talking about? 14 years priot to GNU Emacs? Would this me a PDP-1?
<kreyren> LAX-something last time i checked
<no-defun-allowed> A VAX?
<_death> C is from 1972...
<kreyren> no apparently some old system made by Peter Lax
<kreyren> lemmeh check if i can find backlog
<loke> The first VAX came out in 1977. GNU Emacs was released in 1985. However, there were earlier emacses, and there definitely was one for VMS on VAX.
<no-defun-allowed> A more on-topic question: with CFFI, how should I get at a slot of a struct in an array?
<loke> no-defun-allowed: You have an array of structs?
<no-defun-allowed> Yes.
<kreyren> so apparently VAX?
<no-defun-allowed> Did you read that page at all?
ex_nihilo_ has joined #lisp
<kreyren> ye but i have no idea what most of that means
<no-defun-allowed> Does it look like it could possibly mean "This is an Emacs that runs on a VAX machine"?
<kreyren> was told Vax Common Lisp?
<kreyren> https://en.wikipedia.org/wiki/Vax_Common_Lisp -- > dumb-terminal IDE with Emacs-like editor (programming in Common Lisp)
<loke> no-defun-allowed: It's been a while, but something like (cffi:foreign-slot-value (cffi:mem-aref ARRAY (:struct foo) N) '(:struct foo) NAME)
<no-defun-allowed> Thanks!
ex_nihilo has quit [Ping timeout: 244 seconds]
benjamin-l has quit [Ping timeout: 240 seconds]
jonatack has quit [Ping timeout: 240 seconds]
bjorkintosh has quit [Ping timeout: 244 seconds]
bjorkintosh has joined #lisp
yonkunas has quit [Quit: Connection closed for inactivity]
luckless_ has joined #lisp
Oladon has quit [Quit: Leaving.]
bocaneri has joined #lisp
narimiran has joined #lisp
* kreyren is researching VAX Common Lisp
bocaneri has quit [Max SendQ exceeded]
bocaneri has joined #lisp
bocaneri has quit [Max SendQ exceeded]
bocaneri has joined #lisp
bocaneri has quit [Max SendQ exceeded]
bocaneri has joined #lisp
borei has quit [Ping timeout: 240 seconds]
bocaneri has quit [Remote host closed the connection]
<beach> kreyren: Do you have a VAX to run it on?
<kreyren> beach, nope but i will implement a CI to run it on VAX machine if everything goes as planned
<beach> What is a CI?
toorevitimirp has quit [Ping timeout: 240 seconds]
<no-defun-allowed> A continuous integration script, which runs when you push code to an online repository. Hopefully it uses an emulator.
<beach> I see. Thanks!
<kreyren> beach, Continuous Integration
<beach> Right, thanks.
Misha_B has joined #lisp
treflip has joined #lisp
davepdotorg has joined #lisp
Fare has quit [Ping timeout: 244 seconds]
Jeanne-Kamikaze has quit [Quit: Leaving]
davepdotorg has quit [Ping timeout: 260 seconds]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
dominic34 has quit [Remote host closed the connection]
Cymew has joined #lisp
davepdotorg has quit [Ping timeout: 260 seconds]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
<jackdaniel> no-defun-allowed: indeed ecl formally requires c99 compiler, but factually it works with the earlier standard
<no-defun-allowed> What was before C99? C89? I think that is still some time after the age of VAXen.
<jackdaniel> in fact it was originally written to work (among other things) on a vax machine, however that would be a surprise if it had worked there /now/ :)
<jackdaniel> C89, yes. And it was like this from the beginning (and it still worked on VAX), so there you have it. But I don't know much about vax myself except for the name ;)
davepdotorg has quit [Ping timeout: 272 seconds]
<jackdaniel> what is the best structure to check for membership (a set)?
<jackdaniel> lists and vectors would require in pessimistic case checking all elements
galex-713 has quit [Ping timeout: 272 seconds]
ex_nihilo__ has joined #lisp
<jackdaniel> alternatively I could create a hash table with keys and some dummy values, but that sounds yuck
<no-defun-allowed> If you are okay with insertion having side effects, a hash table with elements as keys. If not, fset or cl-hamt or something.
<jackdaniel> thanks
ex_nihilo_ has quit [Ping timeout: 244 seconds]
<_death> you may also use a sorted vector, or a bit set (for dense sets)
<jackdaniel> right, but objects doesn't have any applicable order (basically they are standard object instances)
hiroaki has quit [Ping timeout: 258 seconds]
<_death> you can define an arbitrary order..
<_death> but a hash table is a good way, if it supports your equality test
<jackdaniel> arbitrary order? what do you mean?
<jackdaniel> you have three opaque instances #<a> #<b> #<c>, by what means do you compare them?
<jackdaniel> some implementations with non-moving gc could give you a pointer
<jackdaniel> but that's it (and it is not portable)
schweers has joined #lisp
<_death> right, if they are opaque then you may not be able to order them.. this would also rule out fset btw
<_death> or at least make it degenerate into a linear search
<jackdaniel> alright, I'll stick with a hash table, thanks
spal has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
<phoe> I use an EQ hash table for that where values are eq to keys
spal has joined #lisp
<phoe> works well enough as a hashset
<_death> then your objects shouldn't be characters or numbers
<_death> or NIL
galex-713 has joined #lisp
<_death> unless you use the second value
<_death> I usually use T as the value
<phoe> _death: yes, sorry, EQ is the best for standard objects; please adjust your test accordingly depending on the type of your objects
<phoe> ;; and I always use the secondary value
ggole has joined #lisp
iissaacc has joined #lisp
<iissaacc> Could anyone familiar with Parenscript tell me why (new (-Person age shoe-size)) is giving me new(Person(age, shoeSize); instead of new Person(age, shoeSize); ?
<iissaacc> The example is from the manual, so it should work but maybe I'm doing something wrong
<phoe> iissaacc: (describe 'new)
<phoe> are you sure you are using the ps-js:new symbol and not one from another package?
<phoe> or rather, parenscript symbol, not ps-js one
<iissaacc> let me check
<iissaacc> yes, sure
drl has quit [Remote host closed the connection]
gaqwas has joined #lisp
johnjay has quit [Ping timeout: 260 seconds]
Alfr_ has quit [*.net *.split]
thonkpod has quit [*.net *.split]
cognemo has quit [*.net *.split]
entel has quit [*.net *.split]
boeg has quit [*.net *.split]
C-16 has quit [*.net *.split]
oldtopman has quit [*.net *.split]
davepdotorg has joined #lisp
<iissaacc> hmm ok i tried it within the parenscript package and it worked so something is going on...
johnjay has joined #lisp
<kreyren> peer-review to the implementation of common lisp in cargo-make is appreciated https://github.com/sagiegurari/cargo-make/issues/461
ljavorsk_ has joined #lisp
santiagopim[m] has joined #lisp
<iissaacc> ok stupid mistake. figure dit out
davepdotorg has quit [Ping timeout: 260 seconds]
<kreyren> iissaacc, yaay
<no-defun-allowed> "but are not designed to be compatible with each other (even though some are mostly compatible)" They are compatible! It wouldn't be a very Common Lisp otherwise.
<no-defun-allowed> And by the sounds of things, you're only parameterizing the line to write, which would best be left to echo.
<kreyren> no-defun-allowed, i meant in lisp overview not in just common lisp if that makes sense
<kreyren> alike elisp using cl- prefix for common lisp functions that it's reimplementing
<no-defun-allowed> Yes, those are different languages.
<iissaacc> i realised you need to :use #:parenscript rather than only :import-from #:parenscript #:ps
<no-defun-allowed> Implementations of Common Lisp implement the same language. An implementation of Emacs implements a different language...
whiteline has joined #lisp
<beach> iissaacc: I advice against :USE-ing any package other than the CL package.
<beach> iissaacc: With package-local nicknames, you can have short package prefixes.
<iissaacc> yes thats what I was trying to avoid, but I don't want to have to write a prefix in front of every parenscript symbol
<iissaacc> I think i have a macro that will solve that problem though
davepdotorg has joined #lisp
<no-defun-allowed> kreyren: So even if that implementation did work, it wouldn't do very much that you couldn't do before. (And there is an edit button somewhere on a comment.)
<beach> Wow, the parenscript package has a nickname of PS. That is really bad.
<_death> iissaacc: you can import #:new
madnificent has joined #lisp
* no-defun-allowed uploaded an image: Screenshot_2020-10-01_17-17-20.png (36KiB) < https://matrix.org/_matrix/media/r0/download/matrix.org/bOBHWxGpLNZrABciMpMEaVaO/Screenshot_2020-10-01_17-17-20.png >
<no-defun-allowed> Please consult this screenshot for where to find the edit button.
<beach> iissaacc: That is a tiny inconvenience compared to the conflicts you will have to resolve when you :USE more than one package like that, and compared to the breakage you will have to fix when the parenscript package exports a new symbol that will conflict with yours.
<iissaacc> i wrote this a while ago when i was still :use ing everything https://controlc.com/4fe05edf
<iissaacc> bad approach?
<beach> iissaacc: For a person reading your code, the package prefix contains valuable information. And if you have two different packages with symbols with the same name, the package prefix immediately says where it is from.
<_death> yes, it has all the issues of :use and more, for example it will also substitute your symbols for internal symbols
davepdotorg has quit [Ping timeout: 264 seconds]
<_death> *substitute internal symbols for your symbols
madnificent has quit [Client Quit]
* kreyren was ordering food x.x reading the backlog
davepdotorg has joined #lisp
<beach> iissaacc: And, though you are not likely to use any of the packages I am the author of, if you tried, you would have a hard time resolving all the conflicts if you were to :USE it.
<iissaacc> i see, i see
dbotton_ has joined #lisp
<beach> And, I maintain that the fact that parenscript uses a general nickname of PS is really really bad.
<kreyren> no-defun-allowed, how is the edit button relevant?
<beach> Imagine if I authored a PostScript package and gave it the same nickname.
madnificent has joined #lisp
<kreyren> no-defun-allowed, where the current implementation is using the cargo-make backend to execute ecl with arguments and parses a script that is saved as a temporary file to be executed
<schweers> I always wondered what the point of package-nicknames were
<_death> beach: that's been the case for a long time now
<beach> _death: What has?
<_death> beach: that parenscript has a ps nickname
<beach> That doesn't make any better.
<beach> The author should be spanked.
supercoven has joined #lisp
<schweers> It seems like a way to use up two names in a global namespace, instead of just one.
<beach> schweers: I totally agree.
pve has joined #lisp
<schweers> Do package local nicknames shadow regular nickames? I.e. can I load parenscript and still have a package local nickname of ps pointing to something else?
<jackdaniel> schweers: yes
<iissaacc> so if parenscript function names used keywords instead, that would be better?
<jackdaniel> they take precedence
<schweers> So that makes the short PS nickname a little less horrible than I first thought.
<beach> iissaacc: That's the only thing that would be worse.
frgo has quit [Remote host closed the connection]
<beach> iissaacc: Because, then, a second system doing the same thing would silently clobber the first one.
<iissaacc> so then it seems like you can't have embedded languages without having to write pkg: in front of everything
<iissaacc> which seems kind of ugly...
<beach> iissaacc: You should write the package prefix, as I explained.
<beach> iissaacc: Unless, of course, you don't ever intend for your code to be used by anyone else.
<jackdaniel> many people do put use in their packages. that makes only sense though for packages you control yourself
<_death> beach: I think what iissaacc meant is that parenscript (which generates javascript) would interpret keyword symbols as primitives
dbotton_ has quit [Ping timeout: 240 seconds]
<jackdaniel> imagine two libraries changing exported symbols - suddently you have a conflict
<beach> iissaacc: Or read by anyone else. Then it won't matter what you do.
<phoe> iissaacc: package-local nicknames
<beach> _death: Ah, OK.
<phoe> you don't need to write package-foo-bar-something: if you can write p: inside your package
<beach> phoe: That would still be ugly according to iissaacc, as we have discussed already.
<iissaacc> _death thats how the S-SQL in postmodern works
<_death> iissaacc: parenscript is fine (apart from the ps nickname).. you just need to import-from the symbols that you want
<iissaacc> right
<phoe> iissaacc: the issue is that in Lisp, primitives are not really keywords most of the time
<no-defun-allowed> kreyren: It is usually more polite to edit comments than make more comments with your changes.
<phoe> SQL has a fixed set of operators/keywords and I find it sorta meaningful to use keywords there, since you can't define new ones
<no-defun-allowed> Also, ECL is not doing very much in your case, other than writing a line you give it. It would be more useful to give it arbitrary Lisp code.
<phoe> ;; when you do, it's already PL/SQL
<kreyren> no-defun-allowed, ah true, but considering the current environment it's probably better to kept alike for archiving
<phoe> whereas in JS/Parenscript I would find it kinda weird to mix functions named with keywords and functions named with non-keyword symbols
<no-defun-allowed> kreyren: And someone can see the edited versions (by clicking on the comment date-time, which is marked as "edited").
<phoe> especially since no one really does that in Common Lisp, which Parenscript is inspired by and lives in
<kreyren> no-defun-allowed, true O.o
<iissaacc> yeah i see what you mean
<phoe> either code contains no keywords in function positions whatsoever
<no-defun-allowed> I meant the older versions.
<phoe> (like in CL)
<kreyren> no-defun-allowed, i update the OP then
<phoe> or it's 100% keywords in function positions, like S-SQL
<iissaacc> alright well I learned something, thanks folks
<_death> until a new SQL standard comes along, or some dbms extends SQL with its own primitives...
toorevitimirp has joined #lisp
<iissaacc> i see a lot of :use in peoples code so i kind of thought it was all g, but it's like from x import * in python
<phoe> _death: that will most likely need S-SQL support/update anyway
<phoe> iissaacc: :USE was very common and recommended before PLNs became ubiquitous
<phoe> but :USE also has its own big issues
<jackdaniel> ubiquitous?
<_death> phoe: that's what I mean.. then the set of symbols is not fixed
<phoe> jackdaniel: s/ubiquitous/supported everywhere
<phoe> _death: yes, I see; I meant, not user-extensible
<jackdaniel> I understand what you said, but is it supported /everywhere/?
<jackdaniel> or is it supported by 3-5 implementations
<phoe> jackdaniel: okay, it is supported *everywhere enough* for my own tastes
<phoe> it is supported now on SBCL, CCL, ECL, Clasp, ABCL, ACL, and will be supported on LW 7.2 AFAIR
treflip has quit [Ping timeout: 240 seconds]
<phoe> that's 6+1
<phoe> CLISP has a waiting PR that implements PLNs, too.
<jackdaniel> so that sounds more like a "gaining traction" than "ubiquitous" ,)
treflip has joined #lisp
<schweers> If I recall correctly the current released version of CCL does not yet support PLNs.
<jackdaniel> don't get me wrong, I would still recommend using PLN;
<phoe> schweers: it does, 1.12 supports them
<kreyren> no-defun-allowed, updated OP hopefully it makes more sense now ^-^
<schweers> Oh, cool! Is that relatively recent?
<schweers> Hm, april. So no
<no-defun-allowed> kreyren: Also, may I ask, have you considered if the program you're adding support to will run on the target machine?
<phoe> the PR was merged in april 2019
<phoe> a release was made in april 2020
<_death> the clisp package on archlinux is also deficient in that it wasn't compiled with modules.. like asdf
ljavorsk__ has joined #lisp
<_death> and then quicklisp's asdf is 2.26.. so things like package-inferred-systems won't work
<kreyren> no-defun-allowed, i did and i expect possible issues on the embedded side of things that i am willing to help with atm
<kreyren> If i don't have the resources to implement that i will fall back to C-base makefile which i already have the method implemented through mentioned in the post
<kreyren> but i expect it to not be an issue
ljavorsk_ has quit [Ping timeout: 256 seconds]
treflip has quit [Ping timeout: 240 seconds]
treflip has joined #lisp
<phoe> jackdaniel: right, I'll use "gaining traction" now, it's a better fit
jonatack has joined #lisp
madnificent has quit [Quit: ZNC 1.8.2 - https://znc.in]
liberliver has joined #lisp
<schweers> I have an instance of a regular user-defined class in a constant. With SBCL this works fine, but CCL tells me that “No MAKE-LOAD-FORM method is defined for #<CSV-TOOLS::CSV-CONFIG #x3020040E5E6D>”. What does this mean?
* schweers makes a note to self: first check clhs, then ask in #lisp
cosimone has joined #lisp
<loke> schweers: It's trying to persist an instance of your class in the FASL file, which may not work.
<schweers> So it seems, yes. I’m reading the clhs on MAKE-LOAD-FORM. It seems to me that SBCL does more work on this than CCL does. So I’ve at the very least learned that I’m relying on SBCL to do something for me, it seems.
<schweers> Dangit, I have to go.
cosimone has quit [Quit: Quit.]
<contrapunctus> Anyone try using cl-prevalence? https://common-lisp.net/project/cl-prevalence/ What was your experience like?
cosimone has joined #lisp
gko` has quit [Remote host closed the connection]
lad has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
<loke> contrapunctus: Are you the troll from c.l.l?
gravicappa has quit [Ping timeout: 272 seconds]
lad has joined #lisp
gko has joined #lisp
<beach> contrapunctus: I didn't use it, but reading the documentation, I got the impression that the class hierarchy has to remain intact when you restore a checkpoint. I may be wrong of course.
mmohammadi9812 has joined #lisp
shka_ has joined #lisp
gravicappa has joined #lisp
<beach> contrapunctus: So I wrote "Clobber" as an alternative: https://github.com/robert-strandh/Clobber. But I haven't used it for anything serious.
madnificent has joined #lisp
vegansbane has quit [Ping timeout: 264 seconds]
<contrapunctus> loke: I've never been on c.l.l. 🤔 what gives you that impression?
frgo has joined #lisp
scymtym has quit [Ping timeout: 272 seconds]
slyrus has joined #lisp
entel has joined #lisp
C-16 has joined #lisp
thonkpod has joined #lisp
Alfr_ has joined #lisp
cognemo has joined #lisp
boeg has joined #lisp
oldtopman has joined #lisp
<contrapunctus> beach: oooh, that looks interesting 😀
hendursa1 has joined #lisp
<beach> Thanks!
<beach> It is basically logging every transaction, so that you can create an equivalent state by replaying the log from a fresh image.
hendursaga has quit [Ping timeout: 240 seconds]
<beach> And since the log only mentions protocol operations, the class hierarchy does not have to remain intact between the image that created the log and the one replaying it.
<beach> The new image has to support the same operations of course.
vegansbane has joined #lisp
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
motersen has joined #lisp
iissaacc has quit [Ping timeout: 272 seconds]
whiteline has quit [Ping timeout: 246 seconds]
toorevitimirp has quit [Ping timeout: 258 seconds]
whiteline has joined #lisp
Bourne has quit [Ping timeout: 240 seconds]
scymtym has joined #lisp
motersen has quit [Ping timeout: 240 seconds]
iissaacc has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
scymtym has quit [*.net *.split]
Alfr_ has quit [*.net *.split]
thonkpod has quit [*.net *.split]
entel has quit [*.net *.split]
cognemo has quit [*.net *.split]
whiteline has quit [*.net *.split]
C-16 has quit [*.net *.split]
boeg has quit [*.net *.split]
oldtopman has quit [*.net *.split]
mmohammadi9812 has quit [Ping timeout: 256 seconds]
nckx has quit [Ping timeout: 264 seconds]
nckx has joined #lisp
treflip has quit [Ping timeout: 256 seconds]
treflip has joined #lisp
shangul has joined #lisp
scymtym has joined #lisp
whiteline has joined #lisp
Alfr_ has joined #lisp
thonkpod has joined #lisp
cognemo has joined #lisp
entel has joined #lisp
C-16 has joined #lisp
boeg has joined #lisp
oldtopman has joined #lisp
treflip has quit [Ping timeout: 256 seconds]
treflip has joined #lisp
mmohammadi9812 has joined #lisp
frgo has quit [Ping timeout: 240 seconds]
ramHero has joined #lisp
srhm has joined #lisp
Bourne has joined #lisp
ex_nihilo__ has quit [Quit: Leaving]
iissaacc has quit [Ping timeout: 272 seconds]
hhmer has joined #lisp
ljavorsk__ has quit [Ping timeout: 260 seconds]
jesse1010 has joined #lisp
ted_wroclaw has joined #lisp
rtypo has joined #lisp
rippa has joined #lisp
orivej has joined #lisp
moewe has joined #lisp
mmohammadi9812 has quit [Quit: I quit (╯°□°)╯︵ ┻━┻]
jonatack has quit [Ping timeout: 260 seconds]
Bourne has quit [Ping timeout: 240 seconds]
moewe is now known as afk_moewe
ebrasca has joined #lisp
toorevitimirp has joined #lisp
gravicappa has quit [Ping timeout: 256 seconds]
orivej has quit [Ping timeout: 240 seconds]
dbotton has quit [Ping timeout: 258 seconds]
ebrasca has quit [Remote host closed the connection]
Papa has quit [Ping timeout: 258 seconds]
Papa has joined #lisp
dbotton has joined #lisp
skapata has joined #lisp
hendursa1 has quit [Remote host closed the connection]
hendursa1 has joined #lisp
orivej has joined #lisp
afk_moewe is now known as moewe
ljavorsk__ has joined #lisp
ludston has joined #lisp
Cymew has quit [Ping timeout: 240 seconds]
<schweers> Should (progn (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 8080)) (drakma:http-request "http://localhost:8080/")) work on CCL? It does on SBCL, but CCL signals a connection refused condition.
sts-q has joined #lisp
<phoe> schweers: which CCL version?
<no-defun-allowed> I guess that would be non-deterministic if HUNCHENTOOT:START starts a thread to do its work.
<schweers> The current one, just downloaded it
<schweers> 1.16 I believe
<phoe> 1.16 doesn't exist AFAIK
<schweers> It has the same problem if I wait first
<phoe> 1.12 is the newest
<schweers> Yes, you’re right. 1.12. I was mistaken
<no-defun-allowed> For kicks, try testing both a few more times; my guess is that you'll get inconsistent behavior for both with that code.
<schweers> Let me put it this way: I started hunchentoot on ccl and opened it default page in a browser, which works fine.
<schweers> If I then (aferwards) use drakma, I get a connection refused condition
<phoe> oh
<schweers> I first also thought that it would be a threading issue, but that doesn’t seem to be the case. At least not the way thought it might.
<phoe> on CCL, localhost binds to ::1 instead
<phoe> explicitly use 127.0.0.1 instead
<schweers> netstat -tulpen tells me that port 8080 is indeed open
<schweers> Hm, but ::1 also binds to 127.0.0.1
<no-defun-allowed> Oh, so it's not really in a PROGN, and you take a non-negligible amount of time between both, so timing shouldn't be a problem.
<phoe> does it? they are different addresses on different protocols
<schweers> no-defun-allowed: exactly.
<schweers> Nah, ipv4 is mapped into ipv6
<schweers> Oh wait.
<schweers> hmmmm
<schweers> Let me try something
<schweers> Hunchentoot on CCL binds to "::"
<schweers> hmmm. Weird
hendursa1 has quit [Quit: hendursa1]
<schweers> phoe: I can reproduce what you just posted with firefox
hendursaga has joined #lisp
<phoe> hmmmm
<schweers> At least I think I did it correctly
<phoe> "In IPv4, an IP address of all zeroes has a special meaning; it refers to the host itself, and is used when a device doesn't know its own address. In IPv6 this concept has been formalized, and the all-zeroes address (0:0:0:0:0:0:0:0) is named the unspecified address."
<phoe> that is not localhost though
<schweers> So yes, if I explicitly use "127.0.0.1" instead of "localhost" it works.
<phoe> ipv6 localhost is ::1
<phoe> so this might be a CCL bug
<flip214> phoe: do you have localhost in /etc/hosts with ::1?
<phoe> flip214: I do
<schweers> Oh, I accidentally uttered something untrue
<schweers> netstat reports 0.0.0.0
<schweers> So it indeed binds to ipv4 only
<schweers> Passing :address "::" to the MAKE-INSTANCE invokation on the EASY-ACCEPTOR makes it work as I want.
<schweers> Thanks for the help!
<phoe> oh wait, I misunderstood binding and connecting
<phoe> binding to 0.0.0.0 makes the server accessible at all ipv4 network interfaces
<phoe> binding to :: - at all ipv6 ifaces
<schweers> And hence all ipv4 ifaces
<schweers> Well, on dual-stack machines.
<schweers> If I had paid more attention to netstat’s output, I could have avoided the question entirely.
mfiano has quit [Remote host closed the connection]
mfiano_ is now known as mfiano
mfiano- has joined #lisp
mfiano- has quit [Remote host closed the connection]
mfiano- has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
mfiano- has quit [Remote host closed the connection]
jonatack has joined #lisp
mfiano- has joined #lisp
bitmapper has quit [Quit: Connection closed for inactivity]
ljavorsk__ has quit [Ping timeout: 240 seconds]
ljavorsk__ has joined #lisp
EvW has joined #lisp
wsinatra has joined #lisp
ljavorsk__ has quit [Ping timeout: 260 seconds]
kaftejiman has joined #lisp
schweers has quit [Ping timeout: 240 seconds]
Fare has joined #lisp
wsinatra_ has joined #lisp
wsinatra has quit [Read error: Connection reset by peer]
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
dbotton has quit [Quit: -a- Connection Timed Out]
dbotton has joined #lisp
frgo has joined #lisp
rpg has joined #lisp
Achylles has joined #lisp
wsinatra_ has quit [Quit: WeeChat 2.9]
wsinatra has joined #lisp
__jrjsmrtn__ has joined #lisp
_jrjsmrtn has quit [Ping timeout: 256 seconds]
ym555 has joined #lisp
FreeBirdLjj has joined #lisp
Achylles has quit [Quit: Leaving]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
treflip has quit [Ping timeout: 246 seconds]
treflip has joined #lisp
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
bitmapper has joined #lisp
resu has joined #lisp
ebrasca has joined #lisp
rtypo has quit [Ping timeout: 256 seconds]
Inline has joined #lisp
treflip has quit [Ping timeout: 264 seconds]
treflip has joined #lisp
toorevitimirp has quit [Ping timeout: 240 seconds]
EvW has quit [Ping timeout: 240 seconds]
Bike has joined #lisp
vaporatorius__ has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
vaporatorius has quit [Ping timeout: 240 seconds]
rippa has quit [Ping timeout: 240 seconds]
rippa has joined #lisp
ljavorsk__ has joined #lisp
dbotton_ has joined #lisp
dbotton__ has joined #lisp
dbotton has quit [Ping timeout: 240 seconds]
ljavorsk__ has quit [Ping timeout: 240 seconds]
treflip has quit [Quit: WeeChat 2.6]
edgar-rft has quit [Quit: Leaving]
Lord_of_Life_ has joined #lisp
frgo has quit [Ping timeout: 260 seconds]
gravicappa has joined #lisp
Lord_of_Life has quit [Ping timeout: 272 seconds]
Lord_of_Life_ is now known as Lord_of_Life
moewe has quit [Ping timeout: 260 seconds]
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
treflip has joined #lisp
treflip has quit [Client Quit]
treflip has joined #lisp
treflip has quit [Client Quit]
treflip has joined #lisp
toorevitimirp has joined #lisp
ebrasca has quit [Ping timeout: 256 seconds]
mmohammadi9812 has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
gaqwas has quit [Remote host closed the connection]
Fare has quit [Ping timeout: 260 seconds]
toorevitimirp has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
ted_wroclaw has quit [Quit: Textual IRC Client: www.textualapp.com]
DGASAU has quit [Read error: Connection reset by peer]
toorevitimirp has quit [Remote host closed the connection]
DGASAU has joined #lisp
davepdotorg has quit [Remote host closed the connection]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
gaqwas has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
Inline has quit [Ping timeout: 260 seconds]
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
EvW has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdot_ has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
dominic34 has joined #lisp
resu has quit [Remote host closed the connection]
D00M9001 has joined #lisp
davepdot_ has quit [Ping timeout: 260 seconds]
jonatack has quit [Quit: jonatack]
hhmer has quit [Quit: Leaving]
jonatack has joined #lisp
Oladon has joined #lisp
scymtym has quit [Ping timeout: 244 seconds]
srhm has quit [Read error: Connection reset by peer]
VincentVega has joined #lisp
srhm has joined #lisp
EvW has quit [Ping timeout: 244 seconds]
orivej has joined #lisp
Lycurgus has joined #lisp
davepdotorg has joined #lisp
dbotton__ has quit [Quit: Leaving]
rippa has quit [Ping timeout: 258 seconds]
rippa has joined #lisp
rogersm has joined #lisp
davepdot_ has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdot_ has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdot_ has joined #lisp
davepdot_ has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
frgo has joined #lisp
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdot_ has joined #lisp
davepdot_ has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
tankrim has quit [Quit: ERC (IRC client for Emacs 27.1.50)]
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
rumbler31 has quit [Remote host closed the connection]
rumbler31 has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
corpix has joined #lisp
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
corpix has quit [Client Quit]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
Lycurgus has quit [Quit: Exeunt]
davepdotorg has joined #lisp
Lycurgus has joined #lisp
D00M9001 has quit [Quit: Lost terminal]
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
<jasom> Has anyone written a set of macros that can shadow all of the CL forms that have implicit progn with a version that lets you change how the implicit progn behaves?
davepdotorg has quit [Read error: Connection reset by peer]
<jasom> that seems like it would be slightly easier to make portable than a correct code-walker while allowing doing some things that traditionally require a code walker
davepdotorg has joined #lisp
<jasom> but it's also a lot of work because of things like tagbody, docstrings, and declarations
<phoe> behaves? what do you mean?
davepdotorg has quit [Read error: Connection reset by peer]
supercoven has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
<jasom> simple example: transform the body of the implicit progn with (mapcar (lambda (x) `(print ,x))
davepdotorg has joined #lisp
<shka_> jasom: this does not sound useful to be honest with you
davepdotorg has quit [Read error: Connection reset by peer]
<jasom> fancier examples might be e.g. implementing RAII that is not bound by dynamic scope; if it's not the value returned from the progn, call the cleanup form immediately
davepdotorg has joined #lisp
Fare has joined #lisp
<jasom> though the latter would require reimplementing a lot more than just implicit progn
<shka_> jasom: this does not sound useful either, unwind-protect is simply better there
<jasom> e.g. OR
davepdotorg has quit [Read error: Connection reset by peer]
tankrim has joined #lisp
<jasom> shka_: unwind-protect is limited to cleaning up things over a dynamic scope
davepdotorg has joined #lisp
<shka_> well, you either do that, or install finalizer
<shka_> sorry, i am not getting it
<jasom> shka_: finalizers are not guaranteed to run ever
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
<shka_> well, if you can't determine when to run a clean up in a dynamic scope, where you can do that?
dra_ has joined #lisp
<shka_> this sounds like a very niche case at best?
<shka_> and macros and niche cases is not the great combination
dra_ is now known as dra
davepdotorg has quit [Read error: Connection reset by peer]
<jasom> implementing threading and delimited continuations also want to override the progn behavior usually
davepdotorg has joined #lisp
<shka_> ok, so why not implementing your own progn in that case?
<jasom> righ. I want to *just* implement my own progn and then plug it into let, defun *c.
Fare has quit [Ping timeout: 260 seconds]
<jasom> And I'm pretty sure a portable library could be written do to that
davepdotorg has quit [Read error: Connection reset by peer]
<shka_> i am sure that you are wrong here
<shka_> let is a special symbol in lisp
davepdotorg has joined #lisp
<jasom> shka_: it would be shadowed
<shka_> ok
<shka_> got it
<jasom> not-cl:let
<jasom> rather than cl:let
<shka_> yeah, i understand
orivej has quit [Ping timeout: 260 seconds]
davepdotorg has quit [Read error: Connection reset by peer]
<shka_> honestly, it sounds like you are trying to force CL to stop being CL and personally i never found much success with that, but good luck
<jasom> cl-cont does a lot of things there; I may look at what they do and see if I can't factor it out into a library. They do a lot more than just changing how progn works.
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
<jasom> I am trying to force CL to stop being CL, and the fact that CL makes this so doable is something I like about it. control-flow and interning are two places that CL makes itself a bit hard to customize though.
davepdotorg has quit [Read error: Connection reset by peer]
davepdot_ has joined #lisp
<shka_> jasom: i share the sentiment, but as i mentioned earlier, it just never worked out for me all that well
davepdot_ has quit [Read error: Connection reset by peer]
<jasom> If I can prototype something I can explore more easily if it's a good or bad idea as compared to just sitting around thinking.
<shka_> at this point i am simply taking lisp as is and built on top of it
davepdotorg has joined #lisp
<shka_> jasom: well, that sound like a fun thing to hack so sure, why not? :-)
davepdotorg has quit [Read error: Connection reset by peer]
<jasom> e.g. the "package names as symbols" reader I made let me notice that it requires gymnastics if you use it for actual heirarchal packages, as you usually want foo:bar:baz defined before foo:bar which is a chicken-and-egg problem. It did make package-local-nicknames a NOP though so that was fun.
iissaacc has joined #lisp
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
dra has quit [Remote host closed the connection]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdot_ has joined #lisp
<Bike> if i understand what you want here, bound declarations would make it really annoying to write
davepdot_ has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
<jasom> Bike: what is a "bound declaration"?
davepdotorg has joined #lisp
<Bike> a declaration for something bound by the operator, e.g. in (let ((x (f))) (declare (integer x) (cons y)) ...), (integer x) is a bound declaration and (cons y) is not
<Bike> you can't just expand that into (let ((x (f))) (my-progn (declare ...) ...)) obviously, and less obviously doing my-locally is not the same
davepdotorg has quit [Read error: Connection reset by peer]
Fare has joined #lisp
davepdotorg has joined #lisp
<jasom> Bike: can you expand it into (let (...) (declare ...) (my-progn ...)) ?
davepdotorg has quit [Read error: Connection reset by peer]
<Bike> mmm probably. maybe it's not that ba
<Bike> d
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
<Bike> i think i'd need to see an example to understand the goal here, though
<Bike> i mean progn isn't the only way to sequence operations, obviously
Oladon has quit [Quit: Leaving.]
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
davepdotorg has joined #lisp
davepdotorg has quit [Read error: Connection reset by peer]
frgo_ has joined #lisp
davepdotorg has joined #lisp
<jasom> Bike: right OR can sequence operations that return non-null values, for example.
<jasom> and tagbody (but that could be seen as a special case of progn)
davepdotorg has quit [Read error: Connection reset by peer]
<Bike> prog1/2, multiple-value-prog1, function calls
<Bike> let*
davepdotorg has joined #lisp
<Bike> (well, and let also)
<jackdaniel> and prog, which mixes at least few of these
frgo has quit [Ping timeout: 240 seconds]
<phoe> luckily prog has an easy macroexpansion, it's just a let/block/tagbody
<jackdaniel> maybe the latter three expand to prog? ,)
<phoe> oh damn
<jackdaniel> that would be problematic, you would need to prune all tags if you expand let or block
<phoe> only if they do not name symbol macros
rogersm has quit [Ping timeout: 244 seconds]
davepdotorg has quit [Ping timeout: 240 seconds]
<jackdaniel> while I've never used prog in the code, I find its universal definition quite compelling
<phoe> I think I did once, when I was writing a simple state machine
Bike has quit [Ping timeout: 240 seconds]
Bike has joined #lisp
flak has joined #lisp
rippa has quit [Ping timeout: 240 seconds]
ebrasca has joined #lisp
ebrasca has quit [Remote host closed the connection]
ebrasca has joined #lisp
sts-q has quit []
Oladon has joined #lisp
sts-q has joined #lisp
sts-q has quit [Client Quit]
Fare has quit [Ping timeout: 260 seconds]
whiteline has quit [*.net *.split]
Alfr_ has quit [*.net *.split]
cognemo has quit [*.net *.split]
thonkpod has quit [*.net *.split]
entel has quit [*.net *.split]
boeg has quit [*.net *.split]
C-16 has quit [*.net *.split]
oldtopman has quit [*.net *.split]
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
jprajzne has quit [Ping timeout: 260 seconds]
tankrim has quit [Remote host closed the connection]
jprajzne has joined #lisp
hiroaki has joined #lisp
gareppa has joined #lisp
sts-q has joined #lisp
treflip has quit [Ping timeout: 240 seconds]
gareppa has quit [Quit: Leaving]
sm2n has quit [Read error: Connection reset by peer]
sm2n has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
galex-713 has quit [Ping timeout: 240 seconds]
galex-713 has joined #lisp
scymtym has joined #lisp
cosimone has quit [Quit: Quit.]
ggole has quit [Quit: Leaving]
motersen has joined #lisp
madage has quit [Remote host closed the connection]
Inline has joined #lisp
Alfr_ has joined #lisp
entel has joined #lisp
whiteline has joined #lisp
cognemo has joined #lisp
thonkpod has joined #lisp
boeg has joined #lisp
oldtopman has joined #lisp
C-16 has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
galex-713 has joined #lisp
gravicappa has quit [Ping timeout: 256 seconds]
gravicappa has joined #lisp
rogersm has joined #lisp
madage has joined #lisp
tankrim has joined #lisp
madage has quit [Remote host closed the connection]
Fare has joined #lisp
davepdotorg has joined #lisp
rpg has joined #lisp
madage has joined #lisp
Oladon has quit [Quit: Leaving.]
davepdotorg has quit [Ping timeout: 240 seconds]
yitzi has joined #lisp
<aeth> Using OR instead of PROGN for its side effects like PROGN on an API that normally doesn't return NIL is an interesting idea.
mindCrime_ has joined #lisp
EvW has joined #lisp
akoana has left #lisp ["Leaving"]
cosimone has joined #lisp
ebrasca has quit [Ping timeout: 260 seconds]
rumbler31 has quit [Ping timeout: 272 seconds]
ebrasca has joined #lisp
shangul has quit [Ping timeout: 256 seconds]
mindCrime_ has quit [Ping timeout: 240 seconds]
bilegeek has joined #lisp
fade is now known as Fade
<jasom> (defmacro progn (&body b) `(or ,@(map 'list (lambda (x) `(and ,x t)))))
rogersm has quit []
<jasom> whoops, forgot the last parameter to mp
<jasom> and needs to be a butlast
<jasom> (defmacro progn (&body b) `(or ,@(map 'list (lambda (x) `(and ,x t)) (butlast b) ,@(last b))))
<jasom> though not sure if or preserves values
<jasom> OR is defined to return all values returned by the last form, but only the primary value if it's anything but the last form; interesting
<Bike> that's for the obvious implementation as (let ((value ,first)) (if value value (or ,@rest)))
<jasom> but the behavior is well specified
<moon-child> am I missing something? Why not just (defmacro progn (&body b) `(funcall #'(lambda () ,@b)))
<phoe> you are trading an explicit progn for an implicit progn
<Bike> lambda has an implicit progn, so depending on your thinking, that's circular
secretmyth has joined #lisp
jprajzne has quit [Quit: jprajzne]
jprajzne has joined #lisp
davepdotorg has joined #lisp
even4void has joined #lisp
<aeth> lambda has an implicit progn; progn has an implicit lambda... how do compilers ever finish compiling?
<moon-child> lol
<moon-child> 'metacircular'
davepdotorg has quit [Ping timeout: 265 seconds]
<jasom> moon-child: the point was also that OR behaves identically to progn if each form is non-null
v3ga has joined #lisp
<jasom> er I have or and and backwards, but other than that what I said
narimiran has quit [Ping timeout: 258 seconds]
<aeth> jasom: well, not quite identically because OR is &rest and PROGN is &body so tools will handle them differently for e.g. indentation.
<Bike> (defmacro progn (&body b) `((lambda (&rest #1=#:r) (declare (ignore #1#)) ,@(last b)) ,@(butlast b)))
Lycurgus has quit [Quit: Exeunt]
jprajzne has quit [Quit: jprajzne]
<aeth> I'm not really sure what a good name is, perhaps prog-every. Then you could do this: (defmacro prog-every (&body body) `(or ,@body))
<Bike> i think "or" would be a good name for that operator
<aeth> OR's taken though
<Bike> (defmacro progn (&body b) (let* ((bl (butlast b)) (f (first (last b))) (syms (loop repeat (length bl) collect (gensym)))) `(let (,@(mapcar #'list syms bl)) ,f)))
<Bike> oh, and put in the (declare (ignore ,@syms)), of course
even4void has quit [Remote host closed the connection]
<jasom> aeth: it's already fairly idiomatic to do things like (and x (foo x)) or (or x default-x)
VincentVega has quit [Remote host closed the connection]
wsinatra has quit [Quit: WeeChat 2.9]
rig0rmortis has joined #lisp
sonologico has joined #lisp
shka_ has quit [Ping timeout: 240 seconds]
Misha_B has quit [Remote host closed the connection]
<ChoHag> aeth: That's an easy problem. Implement them both in terms of a more general construct.
mmohammadi9812 has quit [Quit: I quit (╯°□°)╯︵ ┻━┻]
<aeth> (defmacro more-general-construct ((progn-or-lambda &rest lambda-list) &body body) (ecase progn-or-lambda (:progn (check-type lambda-list null) `(progn ,@body)) (:lambda `(lambda (,@lambda-list) ,@body))))
sts-q has quit [Ping timeout: 260 seconds]
mindCrime_ has joined #lisp
orivej has joined #lisp
scymtym has quit [Ping timeout: 272 seconds]
Fare has quit [Ping timeout: 260 seconds]
mindCrime_ has quit [Excess Flood]
mindCrime_ has joined #lisp
dominic35 has joined #lisp
jprajzne has joined #lisp
dominic34 has quit [Ping timeout: 264 seconds]
dominic35 is now known as dominic34
sts-q has joined #lisp
gravicappa has quit [Ping timeout: 240 seconds]
dbotton_ has quit [Ping timeout: 240 seconds]
Fare has joined #lisp
gaqwas has quit [Ping timeout: 258 seconds]
dbotton has joined #lisp
pve has quit [Quit: leaving]
EvW has quit [Ping timeout: 240 seconds]
Oladon has joined #lisp
dbotton has quit [Ping timeout: 246 seconds]
dbotton_ has joined #lisp
srhm has quit [Ping timeout: 246 seconds]
EvW has joined #lisp
rig0rmortis has quit [Quit: beep boop]
rpg has quit [Quit: Textual IRC Client: www.textualapp.com]
jprajzne has quit [Quit: jprajzne]
jprajzne has joined #lisp
sts-q has quit []
jprajzne has quit [Quit: jprajzne]
davepdotorg has joined #lisp
flak has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
dra_ has joined #lisp
dra_ is now known as dra
jprajzne has joined #lisp
davepdotorg has quit [Ping timeout: 265 seconds]
drl has joined #lisp
jprajzne has quit [Quit: jprajzne]
jprajzne has joined #lisp
motersen has quit [Ping timeout: 240 seconds]
ebrasca has quit [Ping timeout: 256 seconds]
kaftejiman has quit [Remote host closed the connection]
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 240 seconds]
X-Scale` has quit [Ping timeout: 240 seconds]
arpunk has quit [Ping timeout: 240 seconds]
arpunk has joined #lisp
madage has quit [Ping timeout: 240 seconds]
cosimone has quit [Ping timeout: 240 seconds]
dominic34 has quit [Remote host closed the connection]
dra_ has joined #lisp
cosimone has joined #lisp
whiteline has quit [Ping timeout: 244 seconds]
madage has joined #lisp
dra has quit [Ping timeout: 256 seconds]
jprajzne has quit [Quit: jprajzne]
dra_ is now known as dra
iissaacc has quit [Ping timeout: 240 seconds]
bilegeek has quit [Quit: Leaving]
jprajzne has joined #lisp
dra has quit [Quit: Leaving]
Blukunfando has joined #lisp
mindCrime_ has quit [Excess Flood]
mindCrime_ has joined #lisp
Fare has quit [Ping timeout: 240 seconds]
Fare has joined #lisp
cognemo has quit [*.net *.split]
thonkpod has quit [*.net *.split]
entel has quit [*.net *.split]
boeg has quit [*.net *.split]
C-16 has quit [*.net *.split]
oldtopman has quit [*.net *.split]
sjl has quit [Ping timeout: 240 seconds]
eriix[m] has joined #lisp
jprajzne has quit [Quit: jprajzne]