jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language<http://cliki.net/> logs:<https://irclog.whitequark.org/lisp,http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.5, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
<jasom> drmeister: yes it's very hacky, particularly line #7
<makomo> jasom: that is a beautiful hack :-)
dale has quit [Quit: dale]
<drmeister> No - that's pretty neat.
<makomo> jasom: how does sh handle |# though?
Kaisyu7 has joined #lisp
fikka has joined #lisp
<drmeister> That's beautiful - really.
<drmeister> makomo: She shell never hits it.
<drmeister> The shell never hits it.
<drmeister> Control is transferred to sbcl before that hits.
<makomo> drmeister: right, but i was wondering what would happen when sbcl dies. looks like the exec builtin *replaces* the shell process
<makomo> what a glorious hack
epmor_ has quit [Ping timeout: 272 seconds]
pfdietz has quit [Ping timeout: 272 seconds]
pierpa has quit [Quit: Page closed]
fikka has quit [Ping timeout: 246 seconds]
<drmeister> The only wrinkle is communicating the arguments - they need to be escaped when they are put into *script-args*
<jasom> drmeister: I put them in *script-args* because sbcl leaves all of the toplevel options in, and I didn't want to have to filter
<drmeister> I changed it to this...
<jasom> drmeister: I have a script that puts them all in a list shomewhere so you can use "$@"...
<drmeister> --eval "(defvar *script-args* '( $# \"$0\" \"$1\" \"$2\" \"$3\" \"$4\" \"$5\" \"$6\" \"$7\" ))" \
<jasom> drmeister: also this assumes that there won't be any #\" characters in the arguments. Fortunately it's an easy fix if you care
<drmeister> ./count-calls a b c --> (3 "./count-calls" "a" "b" "c" "" "" "" "") I'm printing the *script-args* at the start.
Essadon has quit [Quit: Qutting]
<drmeister> No - that's ok - these don't need to bullet proof. They just need to handle argument lists like: -i foo -o bar -s baz
<drmeister> "don't need to be bullet proof"
<jasom> it's a quick pipe to sed to replace \ with \\ and " with \" if you ever do need it.
<jasom> then you can loop on "$@" and be done with it
<drmeister> These scripts that handle dtrace output parse and query dtrace output full of backtraces - it's stuff that only someone practiced in the art will use.
<drmeister> jasom: Thank you - this is very helpful.
acolarh has quit [Ping timeout: 252 seconds]
Khisanth has quit [Ping timeout: 244 seconds]
<jasom> "'( $(for item in "$@"; do printf '"%s\"'
<jasom> something like: "'( $(for item in "$@"; do printf '"%s\"' "$(escape "$item")"; done) )"
<jasom> drmeister: IMO the for loop version will be better than a length prefix anyways even if you don't add in the escaping.
pfdietz has joined #lisp
Khisanth has joined #lisp
acolarh has joined #lisp
Duns_Scrotus has joined #lisp
smokeink has quit [Remote host closed the connection]
mindCrime has joined #lisp
Oladon has joined #lisp
<aeth> Where should I define a generic that's used all over the place?
<Oladon> Depends on what it's for
<Oladon> If it's a utility, toss it in your utilities area
<aeth> I think I can just take all of the methods and functions I use for freeing and similar things and just make them methods on a generic CLEANUP
nowhere_man has quit [Ping timeout: 252 seconds]
<aeth> (This code interfaces with foreign libraries so the GC can't be relied on here. Or, more accurately, it's way more complicated to rely on the GC than to just have a bunch of WITH-FOOs built on top of UNWIND-PROTECT calling CLEANUP)
lemonpepper24 has joined #lisp
laqq3 has joined #lisp
dale_ has joined #lisp
dale_ is now known as dale
pjb has quit [Remote host closed the connection]
fikka has joined #lisp
pjb has joined #lisp
Pixel_Outlaw has joined #lisp
rumbler31 has joined #lisp
ebrasca has quit [Read error: Connection reset by peer]
fikka has quit [Ping timeout: 246 seconds]
cyraxjoe has joined #lisp
rumbler31 has quit [Ping timeout: 244 seconds]
fikka has joined #lisp
fikka has quit [Ping timeout: 245 seconds]
Balooga_ has joined #lisp
fikka has joined #lisp
Oladon has quit [Ping timeout: 240 seconds]
esrse has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
<gendl> Hi, in cl-who is it possible to have the lhtml be computed with a macro or function?
<gendl> or does it have to be verbatim inside the with-html-output macro?
<gendl> I know you can intersperse regular Lisp forms like dolist, then drop back into lhtml with (htm ...)
<no-defun-allowed> you can do macros
<no-defun-allowed> just put your html in a CL-WHO:HTM form
<no-defun-allowed> i'll find an example
<no-defun-allowed> can slime do emacs-style symbol shortening? for example, sa-l-a-d becomes save-lisp-and-die
fikka has joined #lisp
<trn> beach: Are you around?
<gendl> no-defun-allowed: I think what I need is slightly different -
Balooga_ has quit [Quit: Balooga_]
<gendl> within the body of the with-h-o-t-s, I want to call another macro which itself returns valid lhtml.
<trn> beach: I have a couple of questions for you about the old Ford network that I'm hoping you can answer in regards to 3270 apps on Multics at Ford .
fikka has quit [Ping timeout: 244 seconds]
eschatologist has quit [Ping timeout: 240 seconds]
<gendl> no-defun-allowed: Ha, actually I got it!
<trn> beach: Specifically, did 3270 users login a 3270-related project that defined a restricted process_overseer_?
<trn> beach: Or did they login to a standard project via the answering service as usual users?
<gendl> like you said, I just had to wrap (htm ...) around the lhtml which my macro was emitting.
<gendl> doing it like that, I can include calls to macros at will within my with-html-output-to-string and similar.
<gendl> thanks for pointing me in the right direction!
eschatologist has joined #lisp
fikka has joined #lisp
pierpal has joined #lisp
anewuser has quit [Ping timeout: 245 seconds]
fikka has quit [Ping timeout: 252 seconds]
Kaisyu has joined #lisp
d4ryus has quit [Ping timeout: 244 seconds]
robotoad has joined #lisp
mindCrime_ has joined #lisp
mindCrime has quit [Ping timeout: 252 seconds]
makomo has quit [Ping timeout: 252 seconds]
fikka has joined #lisp
mindCrime_ has quit [Ping timeout: 245 seconds]
igemnace has joined #lisp
fikka has quit [Ping timeout: 245 seconds]
fikka has joined #lisp
fikka has quit [Ping timeout: 246 seconds]
<AeroNotix> http://man7.org/linux/man-pages/man2/timer_create.2.html is there a library out there that exposes this?
<Bike> doesn't seem to be in sb-unix.
<Bike> sb-ext has a bunch of timer shit tho. probably other implementations as well
fikka has joined #lisp
<AeroNotix> oiadhuasd fffsss
<AeroNotix> I was looking in the sb-* docs. I thought timer related things would be under sb-posix/sb-unix
<Bike> section 13 of the manual
<Bike> i assume that in theory, at least, they wouldn't want it os based
<Bike> it uses setitimer instead, though, it says.
<AeroNotix> makes sense now :)
lemonpepper24 has quit [Ping timeout: 246 seconds]
fikka has quit [Ping timeout: 240 seconds]
fikka has joined #lisp
lemonpepper24 has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
dale has quit [Quit: dale]
<beach> Good morning everyone!
dddddd has quit [Remote host closed the connection]
<beach> trn: Sorry, never used a 3270 on Multics. Only standard terminals.
<trn> beach: No problem, thanks anyway. We're trying to see if some behaviour we are seeing is something we are doing wrong, need to fix, or the way it actually was. :)
<beach> I see.
<no-defun-allowed> morning beach
Roy_Fokker has quit [Read error: Connection reset by peer]
rumbler31 has joined #lisp
anewuser has joined #lisp
fikka has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
pierpal has quit [Ping timeout: 252 seconds]
pierpal has joined #lisp
pierpal has quit [Client Quit]
pierpal has joined #lisp
Balooga_ has joined #lisp
dented42 has joined #lisp
fikka has joined #lisp
rumbler31 has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 252 seconds]
d4ryus has joined #lisp
Pixel_Outlaw has quit [Quit: Leaving]
rtypo has quit [Ping timeout: 252 seconds]
fikka has joined #lisp
pjb has quit [Ping timeout: 252 seconds]
fikka has quit [Ping timeout: 272 seconds]
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Balooga_ has quit [Quit: Balooga_]
pierpal has quit [Read error: Connection reset by peer]
_whitelogger has joined #lisp
Balooga_ has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
Bike has quit [Quit: Lost terminal]
lnostdal has quit [Read error: Connection reset by peer]
Tristam has quit [Ping timeout: 272 seconds]
Tristam has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
pjb has joined #lisp
ealfonso has left #lisp ["ERC (IRC client for Emacs 26.1)"]
fikka has joined #lisp
fikka has quit [Ping timeout: 246 seconds]
Balooga_ has quit [Quit: Balooga_]
fikka has joined #lisp
steiner has joined #lisp
ober has joined #lisp
rumbler31 has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
hjudt has quit [Read error: Connection reset by peer]
hjudt_ has joined #lisp
rumbler31 has quit [Ping timeout: 252 seconds]
fikka has joined #lisp
caltelt_ has joined #lisp
anewuser has quit [Quit: anewuser]
fikka has quit [Ping timeout: 245 seconds]
eschatologist has quit [Ping timeout: 240 seconds]
CrazyEddy has quit [Read error: Connection reset by peer]
ober has quit [Ping timeout: 244 seconds]
smokeink has joined #lisp
fikka has joined #lisp
Balooga_ has joined #lisp
Inline has quit [Remote host closed the connection]
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
eschatologist has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
eschatologist has quit [Ping timeout: 240 seconds]
eschatologist has joined #lisp
fikka has joined #lisp
caltelt_ has quit [Remote host closed the connection]
eschatologist has quit [Ping timeout: 240 seconds]
<johnjay> beach: have you studied Multics? you mentioned it in that document a few times
fikka has quit [Ping timeout: 240 seconds]
<beach> Not only that. I used it for several years when I worked in industry.
<no-defun-allowed> nice
dxtr has quit [Ping timeout: 240 seconds]
<johnjay> " Due to its many novel and valuable ideas, Multics had a significant impact on computer science despite its faults"
<johnjay> --wikipedia
<beach> Unfortunately, then Unix came and destroyed, most of that progress.
<johnjay> yeah i did get the impression you thought that way from the document you linked
<beach> And now, most computer users are brainwashed to think that Unix-like systems are actually good.
<johnjay> wiki goes right into the fact ther was no distinction between memory and main storage
<beach> Yes, the memory system was unified.
<no-defun-allowed> sounds very nice
eschatologist has joined #lisp
<beach> It is.
fikka has joined #lisp
<no-defun-allowed> was using it particuarly interesting?
<no-defun-allowed> as far as i can tell unix and multics UIs were fairly similar
<beach> Using it was totally brilliant.
<beach> It didn't start a new process for each command, so the stack was intact when there was a problem. So it was closer to using a Common Lisp system in that respect.
<no-defun-allowed> very nice
<johnjay> interesting quote from ken thompson
<johnjay> Ken Thompson, in a transcribed 2007 interview with Peter Seibel[23] refers to Multics as "…overdesigned and overbuilt and over everything. It was close to unusable. They [Massachusetts Institute of Technology] still claim it’s a monstrous success, but it just clearly wasn't."
<beach> Anyway, the fact that Multics had unified memory is why it bothers me when people have me justify that decision in CLOSOS as if it had never been done before.
<no-defun-allowed> shut your mouth, ken
<johnjay> no-defun-allowed: g'day mate, how's the shrimp on the bahbee
<beach> Well, Ken Thomson is not actually objective in this matter, is he?
<johnjay> nobody is objective
<no-defun-allowed> johnjay: oh strewth the shrimp set me house on fire
fikka has quit [Ping timeout: 246 seconds]
<johnjay> beach: i'm impressed about the reliability parts, apparently you could remove cpus, disks, anything and the system kept running
<beach> johnjay: Well, I can assure you that Multics was very usable.
<no-defun-allowed> gotta get a kangaroo to kill the insurance inspector if he comes near me barbie now
<beach> johnjay: Yes, it was designed partly for the US military, so there were tough specifications.
<johnjay> right. someone in another channel just complained about firefox taking up all the system memory. in fact i have the command 'taskkill /f /im firefox.exe' ready to go always on this pc.
<johnjay> since i guess you said there's not a new stack per process it doesn't have that problem?
<beach> I have said this before, but the Common Lisp condition system was inspired by that of Multics PL/I.
<LdBeth> Good evening
<beach> There was a stack per process, but not a process per command to run (typically).
<no-defun-allowed> hi LdBeth
<beach> Hello LdBeth.
<johnjay> ah ok
<no-defun-allowed> johnjay: must be firefox rusting
<johnjay> it's hard to conceptualize some of this because i'm so used to the typical stack/process/pc setup
<beach> Yes, I know.
<johnjay> no-defun-allowed: it needs more rust if you know what I mean
lnostdal has joined #lisp
<no-defun-allowed> "roses are red, violets are blue, firefox is great, mozilla snorts glue"
<no-defun-allowed> it'd all leak cause of --holes in the rusty bucket-- i mean reference counting
<johnjay> is it something you can actually study in an emulator or is it mostly the conceptual aspect of it?
dxtr has joined #lisp
fikka has joined #lisp
<beach> johnjay: What is "it"?
<johnjay> the design of multics i mean
<beach> Sure, there was a guy here not too long ago who announced a web site running an emulator.
<beach> I tried it. It worked fine. I could run Multics Emacs.
<johnjay> ah like virtual86 huh? cool, didn't know emacs was on there
<LdBeth> emacs almost everywhere
<beach> Aww. Multics Emacs was the second Emacs written in Lisp.
<beach> Maclisp as it were.
<johnjay> i see. which was gnu emacs?
<beach> Apparently the first one was EINE.
nirved has joined #lisp
<beach> GNU Emacs was the third one.
<johnjay> sounds about right
<LdBeth> wait, where's MockLisp one
<beach> Gosling Emacs?
<beach> I don't count that.
<LdBeth> admittdly Mock Lisp isn't like lisp
fikka has quit [Ping timeout: 244 seconds]
Balooga_ has quit [Quit: Balooga_]
<jackdaniel> there is also MicroEmacs, but if we limit software to lisp-only systems, then it doesn't count either ;-)
<jackdaniel> good morning
<LdBeth> morning
<beach> Hello jackdaniel.
SaganMan has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
scymtym has quit [Ping timeout: 252 seconds]
ecraven has quit [Quit: bye]
ecraven has joined #lisp
laqq3 has quit [Ping timeout: 246 seconds]
<no-defun-allowed> multics is really nice
<jackdaniel> *was*
<no-defun-allowed> still is tbh
<LdBeth> Can't find anything useful about what is "IBM Script Fomula Format" used in Axiom
<jackdaniel> no-defun-allowed: how so?
<no-defun-allowed> found an eentarwebs based client for a public multics server
<no-defun-allowed> i think they're still patching it
NB0X-Matt-CA has quit [Excess Flood]
fikka has joined #lisp
NB0X-Matt-CA has joined #lisp
fikka has quit [Ping timeout: 272 seconds]
terpri has quit [Ping timeout: 252 seconds]
terpri has joined #lisp
Balooga_ has joined #lisp
shrdlu68 has joined #lisp
fikka has joined #lisp
<johnjay> hrm can't remember what it was before
<johnjay> but someone, aeth i think, said to build a lisp on top of linux you'd need 5 or 6 things
<johnjay> a posix shell, a compiler, a few other things
<beach> What does it mean to "build a lisp on top of linux"?
<jackdaniel> beach: I guess that means to use linux as a kernel for userspace which would be fully implemented in Lisp
dmiles has quit [Read error: Connection reset by peer]
vlatkoB has joined #lisp
Balooga_ has quit [Quit: Balooga_]
<aeth> Above the level of systemd (or equivalents) and the X server. That would add two more.
Balooga_ has joined #lisp
<beach> What is meant by "userspace" here. All Linux programs that are not in the kernel?
<jackdaniel> yes, that's what that term means
sauvin has joined #lisp
<jackdaniel> there is a kernel space and a user space, that referes to a virtual memory segregation on today operating systems
gpiero has joined #lisp
<beach> I know that part.
dmiles has joined #lisp
<beach> What I was wondering was "userspace which would be fully implemented in Lisp"
<beach> Because I couldn't see a space implemented in Lisp.
jxy has quit [Read error: Connection reset by peer]
EvilTofu has joined #lisp
jxy has joined #lisp
aindilis has quit [Remote host closed the connection]
<beach> And that sound more like implementing a Unix system (except the kernel) in Lisp than "build a lisp on top of linux".
<beach> I guess I am not very smart today.
<beach> I should go do something else perhaps.
aindilis has joined #lisp
<jackdaniel> following wikipedia: "The term userland (or user space) refers to all code that runs outside the operating system's kernel." that's the meaning I had in mind
<beach> Thanks.
<LdBeth> They have systems without a kernel
<jackdaniel> and regarding implementing that: you may have a single process on the system which would be a lisp process, then you have a single address space for all applications in that image
<jackdaniel> that way linux kernel serves a purpose of being a host. I don't think it is necessarily unix-like
<beach> I see.
<LdBeth> The kernel interface it self is very unixy
<aeth> My personal approach would be fairly Unix-like because I'd be aiming at various compatibility things that aren't strictly necessary, like a Unix shell.
<aeth> LdBeth: You definitely don't get the freedom of beach's design
<jackdaniel> not that I'm into that kind of things. I'm getting back to things I'm into ;-)
ober has joined #lisp
<jackdaniel> I was employed at some point of time as an embedded system's engineer, so I'm fed up with linux kernel internals ,p
shka_ has joined #lisp
<aeth> LdBeth: building on top of Linux really limits what you can do
<ober> just use its bottom half
lavaflow has quit [Ping timeout: 252 seconds]
scymtym has joined #lisp
<LdBeth> Probably it's better to discuss it after "CLVM" came out.
varjag has joined #lisp
SumoSud0 has quit [Quit: 8y3 8y3]
<johnjay> jackdaniel: you got fed up with the linux kernel??
<jackdaniel> johnjay: yes, from the linux kernel internals perspective. I still use it of course
shka_ has quit [Ping timeout: 272 seconds]
<no-defun-allowed> here's a stupid research idea: how much effort is put into making a computer unix-like?
<ober> jackdaniel: what do you dislike most? fat dcache?
<no-defun-allowed> for example, there's a hell of a lot of microcode that interprets x86 nowadays
<EvilTofu> CLVM?
<johnjay> jackdaniel: is that linux driver book from o'reilly any good?
<johnjay> or is it better to just study actual kernel code?
<no-defun-allowed> EvilTofu: i'm gonna guess froggey's llvm to cl compiler
<jackdaniel> ober: I didn't work with fat which is well implemented afaik. mostly drm (direct rendering mechanism) and writing custom drivers. it is well written, but it is a frustrating work: i.e you have to restart device to reboot the kernel and check your changes. debugging is hard too (though jtags help)
fikka has quit [Ping timeout: 244 seconds]
<LdBeth> EvilTofu: A lower level machine code generator and optimizer for CL, may or may not be llvm
<jackdaniel> johnjay: it is based on 2.6.x I think. it is good, you'll get a grasp of the abstractions which exist there, but there is much more to learn from the code (like with any non-trivial source code)
fikka has joined #lisp
<johnjay> yeah, just thought i'd ask
<jackdaniel> also custom socs are a nightmare
<johnjay> i was thinking of writing some drivers for reactos, and i wondered how much studying linux driver model would help for that
<jackdaniel> writing a simple driver given a datasheet is not a hard thing
<EvilTofu> So on top of Raspberry Pi?
<jackdaniel> reverse-engineering custom protocol is way harder. but this is offtopic on this channel. sorry for bringing this up
wigust has joined #lisp
<ober> fat as in size, not the filesystem
<jackdaniel> ah
<EvilTofu> Are there any Lisp to bare metal implementations? Besides the Lisp machine.
<jackdaniel> EvilTofu: Movitz (x86) and Mezzano (x86-64 with arm64 port on its way)
graphene has quit [Read error: Connection reset by peer]
mange has quit [Remote host closed the connection]
heisig has joined #lisp
graphene has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
<ober> movitz still active?
<jackdaniel> I'm not aware of any recent movitz activity
<ober> seems last update is older than gh.
<EvilTofu> What about open genera?
fikka has joined #lisp
<jackdaniel> EvilTofu: opengenera is a full operating system with a development environment etc etc, it is not a CL implementation (however it has CL implementation in it)
ober has quit [Read error: Connection reset by peer]
ober has joined #lisp
fikka has quit [Ping timeout: 246 seconds]
fikka has joined #lisp
<aeth> You probably wouldn't want to use its CL implementation because it's very old now.
<jackdaniel> I don't see why that would be an obstacle
EvilTofu has quit [Ping timeout: 252 seconds]
<jackdaniel> if you use genera, genera's cl is your best pick
<aeth> I mean you wouldn't want to use Genera if you wanted to use CL
<jackdaniel> (if not only)
<aeth> I would imagine that quite a few libraries would be broken. Maybe even the majority on Quicklisp.
<aeth> The standard might be fixed but the ecosystem isn't
fikka has quit [Ping timeout: 272 seconds]
smokeink has quit [Remote host closed the connection]
smokeink has joined #lisp
smokeink has quit [Remote host closed the connection]
smokeink has joined #lisp
<Demosthenex> hrm. i'm having to learn about GC and scaling now. i hadn't realized my latest rest-api downloads were over 300mb... no wonder it's taking ages. parallelism doesn't help
deba5e12 has quit [Ping timeout: 260 seconds]
<Demosthenex> parallel wget's can download it in 5.6 seconds, but in lisp it's running a half hour or more. but that's download, parse, and insert into db.
lavaflow has joined #lisp
<shrdlu68> keep-alive?
<Demosthenex> well, if i download it all into lists i hit the heap limit fast :P
<no-defun-allowed> accepting gzip compression?
nckx has quit [Quit: Updating my GNU GuixSD server — gnu.org/s/guix]
<Demosthenex> no-defun-allowed: dexador is pulling it down gzipped. but it appears to uncompress before passing it to me
schweers has joined #lisp
steiner has quit [Remote host closed the connection]
steiner has joined #lisp
Balooga_ has quit [Quit: Balooga_]
nckx has joined #lisp
lavaflow has quit [Ping timeout: 240 seconds]
deba5e12 has joined #lisp
fikka has joined #lisp
graphene has quit [Remote host closed the connection]
deba5e12 has quit [Ping timeout: 240 seconds]
fikka has quit [Ping timeout: 240 seconds]
graphene has joined #lisp
shka_ has joined #lisp
<shka_> good morning
<no-defun-allowed> hi shka_
deba5e12 has joined #lisp
CatchMe has joined #lisp
<CatchMe> how to generate lispobj in C using ffi?
<no-defun-allowed> probably "implementation dependent"
<CatchMe> I found clisp to be suitable, but I was looking for generic thing.
<CatchMe> I want to port pybind11, but they use python.h which specify pyobject.
<schweers> CatchMe: I’ve never done this, but my guess would be: make a lisp function which can be called from C (implementation dependent), have that object create/obtain said object and return it. But I’m not sure this works in general.
<schweers> I’m not sure what has to be done so the object will not be collected while some C code still holds a reference to it, and how to collect it once C no longer has a reference.
Tristam has quit [Ping timeout: 245 seconds]
<CatchMe> lisp code for create called from c won't allow to pass c++ classes
pjb has quit [Ping timeout: 240 seconds]
Tristam has joined #lisp
<schweers> you can always pass pointers? This kind of code is probably always going to be pretty ugly.
frgo has joined #lisp
<CatchMe> So I would just go with clisp
<Demosthenex> shka_: lparallel is beautiful =]
CatchMe has quit [Quit: leaving]
<shka_> Demosthenex: yeah, it is sexier then Raquel Welch
otwieracz has joined #lisp
<no-defun-allowed> beach: your guide on computer design is really good
fikka has joined #lisp
<beach> no-defun-allowed: Thanks! But which one is it that you are reading?
<no-defun-allowed> "computer architecture tutorial"
<beach> Ah, yes.
<no-defun-allowed> it appears you were interrupted before you wrote the part on interrupts
<beach> I wrote it in a book.
<beach> But the book is in French.
<no-defun-allowed> i saw
<no-defun-allowed> i can read some french but probably not enough to read a book. "je ne parlais francais"
<beach> I have vague plans for translating it to English, but I would need to get the copyright back from the editor.
<smokeink> quick question: https://github.com/norvig/paip-lisp/blob/master/lisp/macsyma.lisp#L211 <- shouldn't this line be (1 `(- ,(integrate (exp-lhs exp) x))) ? Otherwise (simp '(int (- x) d x)) returns `(1/2 * (X ^ 2)) instead of `(-1/2 * (X ^ 2))
<beach> smokeink: loke would be able to answer that I think.
<loke> What?
<no-defun-allowed> oops, i forgot the "pas" between parlais and francais
<smokeink> I'm surprised that this bug has survived up to the latest code on github. It's in the book as well
<loke> smokeink: The latest version of Macsyma is called Maxima, and I don't think it has such bugs.
<no-defun-allowed> if i had to guess, the PAIP copy would be a clone in the spirit of ma{csyma,xima}
<smokeink> I mean the sourcecode for the book PAIP , which has been studied by many students and teachers
<loke> smokeink: Buty you are right about the error.
<smokeink> or perhaps it hasn't been studied by as many people as it deserves to be
trittweiler has joined #lisp
SaganMan has quit [Quit: WeeChat 1.6]
shrdlu68 has quit [Ping timeout: 252 seconds]
frgo has quit [Ping timeout: 246 seconds]
ober has quit [Read error: Connection reset by peer]
wigust has quit [Ping timeout: 272 seconds]
shka_ has quit [Quit: WeeChat 1.9.1]
shka_ has joined #lisp
pierpal has joined #lisp
m00natic has joined #lisp
eminhi has joined #lisp
dddddd has joined #lisp
rotty has quit [Ping timeout: 240 seconds]
pierpal has quit [Remote host closed the connection]
atgreen_ has joined #lisp
atgreen has quit [Ping timeout: 244 seconds]
orivej has joined #lisp
rotty has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
makomo has joined #lisp
fikka has joined #lisp
kooga has joined #lisp
fikka has quit [Ping timeout: 244 seconds]
DGASAU has quit [Ping timeout: 245 seconds]
fikka has joined #lisp
DGASAU has joined #lisp
lavaflow has joined #lisp
fikka has quit [Ping timeout: 244 seconds]
esrse has quit [Ping timeout: 272 seconds]
lavaflow has quit [Ping timeout: 252 seconds]
Tristam has quit [Ping timeout: 252 seconds]
Tristam has joined #lisp
fikka has joined #lisp
beach has quit [Ping timeout: 252 seconds]
beach has joined #lisp
mkolenda has quit [Remote host closed the connection]
mkolenda has joined #lisp
azimut has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 252 seconds]
rumbler31 has joined #lisp
eminhi has quit [Ping timeout: 252 seconds]
razzy has joined #lisp
atgreen_ has quit [Ping timeout: 246 seconds]
lavaflow has joined #lisp
nowhere_man has joined #lisp
lavaflow has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
Essadon has joined #lisp
CrazyEddy has joined #lisp
graphene has quit [Remote host closed the connection]
CatchMe has joined #lisp
graphene has joined #lisp
<CatchMe> Anyone has an example for ECL using cl_object to be returned from c funtion cffi?
<jackdaniel> you may find plenty of examples how to work with cl_objects directly in ECL's code and documentatino about ffi
<CatchMe> I want to interface it with c++, I think I have to write the wrapper code in c++!
<jackdaniel> you are lucky, there is an intern who works on c++ bridge right now
<jackdaniel> check out repository and see merge requests (it is still work in progress)
<beach> jackdaniel: In your company?
shrdlu68 has joined #lisp
<jackdaniel> for details you may ask mkolenda
<CatchMe> not clasp, right?
<jackdaniel> beach: yes
<jackdaniel> CatchMe: not clasp, ecl
<beach> jackdaniel: So ultimately, that bridge could be used to interface with LLVM?
<jackdaniel> beach: it's the other way around. that bridge could be used to access Lisp from C++ (i.e from LLVM module)
<jackdaniel> we already can interface with C++ from ECL if compiler is built with C++ support
<beach> Hmm. OK.
<beach> Oh, OK.
<jackdaniel> so this bridge is a step towards making ECL more usable from the outside
<beach> Got it.
<beach> But now I am thinking, what does Clasp do that you can't already do with ECL, then?
<beach> GC of C++ instances?
<CatchMe> I was thinking to take pybind11 approach
<jackdaniel> ECL compiles to C/C++ and uses compiler of that language
<jackdaniel> Clasp produces LLVM IR which is then optimized by LLVM framework
<jackdaniel> so it cuts one step of (limiting!) abstraction of C/C++
<beach> Sure.
<beach> OK, thanks.
<jackdaniel> that said I have plans to generalize compiler's backend interface in ECL (to be able to plug into something else than C compiler), but you already know that
<beach> I do, yes.
lavaflow has joined #lisp
rumbler31 has quit [Remote host closed the connection]
epmor has joined #lisp
<CatchMe> seems great, but in a very early stage
epmor has quit [Client Quit]
<jackdaniel> you may chip in with your development time to speed things up
<CatchMe> So no problem with porting pybind11 to clbind11!
shifty has joined #lisp
Bronsa has joined #lisp
smokeink has quit [Remote host closed the connection]
beach has quit [Ping timeout: 250 seconds]
smokeink has joined #lisp
beach has joined #lisp
steiner has quit [Remote host closed the connection]
steiner has joined #lisp
Achylles has joined #lisp
Bike has joined #lisp
CatchMe has quit [Quit: leaving]
<makomo> i posted this http://plaster.tymoon.eu/view/917#917 yesterday but i think it was pretty late for most of #lisp, so here it is once again. if anyone has any suggestions i'd be happy to hear about them
<makomo> shka_: regarding the code walker solution, here's what i came up with (it took some diging
<makomo> (it took some diging within SB-WALKER)*
<shka_> makomo: sadly i can't comment as each time i am attempting code walking something bad happens
<shka_> so i gave up on code walkers all together
<beach> makomo: I stopped reading at VHDL, but I'll try again.
<makomo> Xof: thanks for the initial example. also, i just realized you were the author of that code walking article (let over lambda + sbcl). :-)
<makomo> shka_: heh. if only there was a code walker within the standard. i think it would make many things a lot easier :^(
<shka_> it would certainly be good thing to have
<shka_> but good luck with your task anyway
<makomo> beach: thanks for trying :-), i'll be happy to hear anything you have to suggest
<heisig> I have been using agnostic-lizard as code walker without any issues so far.
<makomo> heisig: ah, really? i was going to try that as well. nice to hear that it works
<beach> makomo: I can't really understand the description, unfortunately. Too many unknowns like "signal" and "process"
<makomo> at a first glance, it doesn't appear to have a lot of documentation, but then again, SB-WALKER isn't any better
<makomo> and even worse, it's implementation-specific
<shka_> agnostic-lizard... never heared about it before
<makomo> shka_: there's an ELS talk about it on yt
<shka_> searching
<makomo> beach: the problem isn't very domain specific. the one thing that you need to know is that i need to somehow "preprocess" the body of a :process and find all of the <signal>s within function calls of the form (<- <signal> <value>)
<makomo> this has to be done *before* the body of a :process is actually run (and that happens within the simulation)
<heisig> agnostic-lizard is as portable as it can be. The only thing where it fails (and where all code walkers fail) is when a macro stores its environment in a global variable and another macro uses it.
<heisig> But if you write such code, you are doomed anyway...
<beach> heisig: How does it represent lexical compile-time environments?
<makomo> beach: the simulation has to know what signals a process is trying to assign to, because that information is necessary to set up the simulation
<makomo> beach: whether or not that assignment is ever executed is irrelevant
<beach> heisig: If it has its own representation, then things will fail when a macro passes the environment it receives to the MACROEXPAND of the system.
<shka_> heisig: i should give it a shot i think
<heisig> beach: I am not the author. Give me a second to re-read the code.
steiner has quit [Remote host closed the connection]
<makomo> shka_: what code walker(s) did you use before?
steiner has joined #lisp
<beach> makomo: Do the <- calls need to be replaced, or is that operator defined in the environment that you compile the thing in?
<shka_> makomo: mostly my own :P
<makomo> shka_: that's why it failed! :D
<shka_> yeah, but there was nothing quite portable
<shka_> and i like my code portable
<jackdaniel> makomo: if it is your dsl, and if you can mandate, that (<- …) is always toplevel (i.e it is not nested in other instructions) it is as trivial as traversing the "BODY" list and counting CAR's being eq to '<-
<shrdlu68> shka_: Hi, in the bit-trie code, what is length?
<shka_> shrdlu68: length of integer
<makomo> beach: hm, i haven't decided yet whether <- is even going to be a function. it will probably have to a macro actually, because the first argument is always going to be a symbol, and i don't want the user to have to quote it every time. currently, it's a global function within the whole program
<shka_> integer-length won't be enough because your bit-vectors can have leading zero
<beach> makomo: Also, what does it mean to "find" them? Get a copy of the form? find the location within the process? Something else?
<shrdlu68> shka_: I understand.
Lauven has joined #lisp
<shka_> -5 on each level because 32 is the number of children on each node
<makomo> beach: get a copy of the form, but only if that form represents an actual function call (rather than being a quoted list or something else)
<shka_> this also allows compression
<makomo> jackdaniel: i thought about that too, but sadly they can be nested
<shka_> by using 32 bitmask
<makomo> jackdaniel: i.e. i can have (if something (<- ...) (<- ...))
<jackdaniel> and both should be "counted"?
<makomo> yup
<jackdaniel> because if you want to calculate, how many output pins you need, then such if should count as 1
<jackdaniel> just saying
<beach> makomo: What if you make it into a macro or a compiler macro that expands to (eval-when ...) and have some side effects at compile time, like consing them onto a list held in a special variable?
<jackdaniel> macro may be expanded multiple times, no?
<beach> It doesn't matter.
<beach> He just wants a copy of the form.
<makomo> perhaps "count" is an unfortunate word. i don't know how many times it's called, only the signals that are being assigned to
<jackdaniel> he wants copies of all forms, if you count them twice, you have twice the copies you need. that depends on what he wants to do
<makomo> beach: that could work (and is the 2nd idea in my comment) but i worry that it might be tricky. the body of a :process isn't valid lisp code right away, for example. i first need to wrap it within a LET that will bring all of the implicitly used signals into scope
<makomo> jackdaniel: s/know/want/
<beach> makomo: I see. Well, I have run out of ideas. Other than using a code walker. :)
<makomo> beach: which means that all that work has to be performed at macroexpansion-time (by DEFCOMPONENT for example)
<makomo> i.e. DEFCOMPONENT would somehow arrange for (<- ...) to be expanded, but the only way i know of doing this is by placing that code within a lambda for example
<makomo> and for that code to compile properly, i need the code to be valid
<beach> You can use Generate-AST of Cleavir to do things like that. It will allow you to capture references to undefined variables. But it's a bit involved to set up a first-class global environment for Cleavir to work against.
Lauven has left #lisp [#lisp]
<shka_> beach: that actually sounds like a cool idea
<beach> Thanks.
<heisig> beach: agnostic-lizard simultaneously maintains its own environment (called metaenv) and the host environment. I have not fully understood the details, but macroexpand-1 uses eval at some place to patch the host environment appropriately.
<makomo> beach: hm, sounds interesting. that would be a variant of the code walking solution right?
<beach> makomo: Absolutely.
<makomo> right, so it's either (1) code walking or (2) macroexpansion-time trickery. so far i haven't thought of anything else
<beach> heisig: That sounds very strange, because the host lexical compile-time environment is not a portable thing.
<beach> heisig: It is not that important. Don't spend time on it for my sake.
<makomo> heisig: where do you suggest i begin with agnostic-lizard? examples.lisp?
atgreen_ has joined #lisp
mindCrime has joined #lisp
<heisig> makomo: I don't know. I have trouble understanding it myself :)
<makomo> heisig: heh, if only it had more documentation. :(
shangul has joined #lisp
ebrasca has joined #lisp
Achylles has quit [Remote host closed the connection]
<makomo> beach: hm, thinking about the EVAL-WHEN solution (which is a variant of the macroexpansion solution) -- wouldn't expanding into an EVAL-WHEN fail for non-top-level forms, since calls to <- can appear anywhere within the body?
Inline has joined #lisp
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
shangul has left #lisp ["I just left"]
<beach> I guess you are right.
<beach> You would have to have the macroexpander do the work.
<beach> But as I understand it, you can't use that solution anyway, because you can't compile the process until you know the signal variables, so that you can wrap the process code in a binding form for them.
<makomo> beach: i wasn't very explicit about what i meant there. the knowledge about which signals are potentially assigned is required for the simulation. for actually generating the full :process body (which is part of defining the component), only the signals declared within the :signals clause + the component's pins (2nd argument to DEFCOMPONENT) are required
argoneus has quit [Quit: No Ping reply in 180 seconds.]
<makomo> defining the component happens before the simulation. so the macroexpansion solution would work, but it would require the body generation to happen at macroexpansion-time
<makomo> i guess that's not really a problem, but it just appears "complex" to me, for some unjustified reason
argoneus has joined #lisp
Lycurgus has joined #lisp
<beach> Well there is also the problem jackdaniel mentioned, that the macro can be expanded any number of times.
mindCrime has quit [Ping timeout: 240 seconds]
argoneus has quit [Quit: No Ping reply in 180 seconds.]
argoneus has joined #lisp
smokeink has quit [Ping timeout: 272 seconds]
<makomo> beach: mhm, i thought of that too, but fortunately i only to know whether the signal appears *at all*, not how many times
<makomo> need to know*
<jackdaniel> makomo: but why do you refuse to use a code walker?
<jackdaniel> this sketch is all you need
orivej has quit [Ping timeout: 245 seconds]
fikka has quit [Ping timeout: 272 seconds]
<makomo> jackdaniel: oh, i didn't refuse. i already created a solution that uses a code walker, but it uses SB-WALKER http://plaster.tymoon.eu/view/919#
<makomo> jackdaniel: i was going to try angostic-lizard next, but i don't know where to start
<jackdaniel> (this solution won't work on (funcall foo though)
<jackdaniel> but I think that would be a reasonable requirement to not pass <- as a function
<makomo> jackdaniel: oh, good point. i guess APPLY is another problem as well
<jackdaniel> for sake of enforcing that you should make it a macro
<makomo> i think <- will end up being a macro anyway, because i don't want the user to have to quote the symbol's name every time
grumble has quit [Ping timeout: 600 seconds]
wheelsucker has joined #lisp
grumble has joined #lisp
<jackdaniel> unfortunately agnostic-lizard doesn't provide a hook for unexpadned macros (there is some hardwiring interface though)
warweasle has joined #lisp
dale has joined #lisp
<jackdaniel> solution to that could be wrapping body in `(flet ((<- (&rest args) nil)) ,body)
<jackdaniel> in call to walk-form
fikka has joined #lisp
gector has quit [Ping timeout: 252 seconds]
gector has joined #lisp
edgar-rft has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 272 seconds]
steiner has quit [Remote host closed the connection]
heisig has quit [Quit: Leaving]
rtypo has joined #lisp
smokeink has joined #lisp
kooga has quit [Ping timeout: 252 seconds]
laqq3 has joined #lisp
argoneus has quit [Quit: No Ping reply in 180 seconds.]
argoneus has joined #lisp
fikka has joined #lisp
<makomo> jackdaniel: thanks for the example. i'll try using agnostic-lizard as well
rtypo has quit [Quit: WeeChat 2.2]
nowhere_man has quit [Read error: Connection reset by peer]
fikka has quit [Ping timeout: 252 seconds]
nowhere_man has joined #lisp
schjetne has quit [Quit: No Ping reply in 180 seconds.]
argoneus has quit [Quit: No Ping reply in 180 seconds.]
argoneus has joined #lisp
mindCrime has joined #lisp
kooga has joined #lisp
jxy has quit [Ping timeout: 252 seconds]
orivej has joined #lisp
<schweers> does lisp has something similar to this? http://mirror.racket-lang.org/docs/5.1/html/reference/fasl.html
<dlowe> schweers: yes.
nbunjevac has joined #lisp
steiner has joined #lisp
<makomo> jackdaniel: regarding DSL design and the requirements/constraints on its usage: you mention that it's reasonable to require that one doesn't try to FUNCALL/APPLY #'<-. would you fit (1) local functions that call <- and (2) lambdas that call <- into that category as well (whether or not either of those gets actually invoked)?
<schweers> dlowe: in lisp a fasl is not just a binary representation of an sexp, or is it?
askatasuna has joined #lisp
<dlowe> schweers: it is not
<makomo> jackdaniel: i think it's reasonable as well. the documentation will simply say something like "using <- in such and such context is undefined"
<schweers> have you opened the link? or just looked at the url?
<dlowe> schweers: I have opened the link.
<schweers> what can I use in lisp then?
<dlowe> quickload cl-store
fikka has joined #lisp
askatasuna has left #lisp [#lisp]
<schweers> thanks, I’ll take a look
argoneus has quit [Quit: No Ping reply in 180 seconds.]
fikka has quit [Ping timeout: 244 seconds]
argoneus has joined #lisp
cage_ has joined #lisp
Lycurgus has quit [Quit: Exeunt]
bradcomp has joined #lisp
<AeroNotix> dlowe: neat
<AeroNotix> although it seems to have a DECENT overhead
<AeroNotix> though I can't see how else it would encode what it is encoding
<AeroNotix> 81 bytes for an integer and a symbol
nika has joined #lisp
jinkies has joined #lisp
<AeroNotix> I'm gonna use cl-store until I find something better, though. It's pretty neat.
<shka_> cl-store is just to convinient
shrdlu68 has quit [Ping timeout: 272 seconds]
<jackdaniel> makomo: if <- is a macro, then you can't pass it to a higher order function
<jackdaniel> so it is enough to say, that <- is a macro (and that should be enough for a Lisp programmer to know, that funcall/apply doesn't, khm, apply here)
<makomo> jackdaniel: true, but let's say someone just uses it within a local function or a lambda (which might or might not be called eventually)
<makomo> jackdaniel: hah :-)
<makomo> for example, something like (let ((func (lambda () (<- a 1)))) <body which never actually calls func>)
<jackdaniel> also mind, that if you have body like: (progn (foo) (bar) (<- g)) code walker will count *one* <- invocation
FreeBirdLjj has quit [Remote host closed the connection]
<jackdaniel> *but* foo and bar may have <- in their body defined elsewhere
FreeBirdLjj has joined #lisp
<jackdaniel> and there is no way around that, be it a walker or macroexpansion
<makomo> yes, that would be a third case of what i'm talking about
nika has quit [Ping timeout: 272 seconds]
<makomo> so, global functions, local functions and lambdas (which are almost like local functions in the context of this problem)
<AeroNotix> shka_: agreed. Nice API as well
<makomo> jackdaniel: i'm wondering whether to just declare the usage of <- within any of those as invalid/undefined behavior
<makomo> the case with global functions should definitely be undefined
<jackdaniel> sure, it is your dsl after all
<jackdaniel> in your defwhatever macro you may simply macrolet <- , otherwise it is undefined
<makomo> jackdaniel: yeah, the question is a bit tricky since the constraint really depends on how i want to design the DSL, which requires a bit of domain-specific knowledge to answer properly
<jackdaniel> I'm sure mrSpec could give you a hint or two on that, but he rarely speaks here ;)
fikka has joined #lisp
<jackdaniel> I need to attend some other things, so good luck and see you later
<makomo> jackdaniel: regarding DSLs in general or hardware-modeling specifically?
<makomo> jackdaniel: ok, thanks for the input
<jackdaniel> hardware modelling with lisp dsl
<makomo> jackdaniel: ah ok
<Xach> Something has Happened with sdl2 or something related to it
<Xach> A bunch of failures in http://report.quicklisp.org/2018-09-11/failure-report.html are of the form: Trying to use AUTOCOLLECT without TRIVIAL-GARBAGE
fikka has quit [Ping timeout: 245 seconds]
gravicappa has joined #lisp
fikka has joined #lisp
steiner has quit [Remote host closed the connection]
kushal has quit [Ping timeout: 256 seconds]
kushal has joined #lisp
varjag has quit [Quit: ERC (IRC client for Emacs 24.5.1)]
fikka has quit [Ping timeout: 240 seconds]
igemnace has quit [Quit: WeeChat 2.2]
rippa has joined #lisp
shka_ has quit [Quit: WeeChat 1.9.1]
<cage_> Xach, reported on #lispgames
<cage_> the last commit removed trivial-finalizer
gpiero has quit [Remote host closed the connection]
fikka has joined #lisp
steiner has joined #lisp
fikka has quit [Ping timeout: 264 seconds]
smokeink has quit [Ping timeout: 252 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
varjag has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
FreeBirdLjj has joined #lisp
<Xach> cage_: thank you. commit to which repo?
<Xach> cage_: I found it
fikka has joined #lisp
<Xach> What should people do?
<cage_> i can not help much more a note to mfiano has been left
<cage_> waiting for him
<Xach> Ok, thanks.
<cage_> you're welcome
<aeth> cl-sdl2 is *really* bad with caches. I've had problems with it 3-4 times that were solved by deleting caches for it. I'd delete caches and retry before reporting bugs with it (but that itself might be a bug?)
<Xach> I suspect this is a bigger problem
<cage_> aeth, honestly never happened thet to me
<cage_> *that
Bronsa has quit [Ping timeout: 272 seconds]
<cage_> sometimes i got the repl unusable, i mean the input is blocked but i think this was related to ffi
<cage_> not an expert of graphic libraries but i found cl-sdl2 very useful
schweers has quit [Ping timeout: 240 seconds]
nsrahmad has joined #lisp
shrdlu68 has joined #lisp
m00natic has quit [Remote host closed the connection]
SaganMan has joined #lisp
shrdlu68 has quit [Read error: Connection reset by peer]
rtypo has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
ym has quit [Remote host closed the connection]
fikka has quit [Ping timeout: 252 seconds]
shka_ has joined #lisp
Kaisyu has quit [Quit: Connection closed for inactivity]
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
scymtym has quit [Ping timeout: 240 seconds]
lavaflow has quit [Read error: Connection reset by peer]
fikka has joined #lisp
lavaflow has joined #lisp
<AeroNotix> uh, github so slow today.
<AeroNotix> they're having issues apparently
robotoad has quit [Ping timeout: 244 seconds]
fikka has quit [Ping timeout: 246 seconds]
nsrahmad has quit [Remote host closed the connection]
trafaret1 has joined #lisp
<trafaret1> hi there
<AeroNotix> trafaret1: hello
<trafaret1> I already asked this question on #emacs
<trafaret1> I'm working in company which deal with programming PLC controllers
<trafaret1> About half year ago I'm started learning emacs and fall in love in org-mode
<trafaret1> and question about does emacs org-mode and lisp replace MS Excel at all
<trafaret1> for arranding and processing data
<AeroNotix> trafaret1: that genuinely is an #emacs question
<AeroNotix> this is #lisp for Common Lisp, see /topic
anunnaki has joined #lisp
<AeroNotix> trafaret1: however, there is an emacs spreadsheet-mode. You might find that useful
ealfonso has joined #lisp
<dlowe> There's also ##lisp for any Lisp variant
fikka has joined #lisp
slyrus has quit [Quit: slyrus]
slyrus1 is now known as slyrus
moei has quit [Quit: Leaving...]
fikka has quit [Ping timeout: 240 seconds]
sz0 has joined #lisp
slyrus1 has joined #lisp
scymtym has joined #lisp
metallicus has joined #lisp
<mfiano> Xach: Myself and a few others have tested the no-finalizers branch for a week after posting about it on Reddit, and given no warnings or errors by multiple people, it was merged yesterday
<mfiano> If you can provide a test case I can look into it, but it does work for the others that have tried so far
fikka has joined #lisp
dented42 has joined #lisp
fikka has quit [Ping timeout: 264 seconds]
fikka has joined #lisp
sauvin has quit [Remote host closed the connection]
SaganMan has quit [Quit: oyasumi]
dented42 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
fikka has quit [Ping timeout: 244 seconds]
robotoad has joined #lisp
dented42 has joined #lisp
nowhere_man has joined #lisp
dented42 has quit [Client Quit]
Aritheanie has quit [Quit: No Ping reply in 180 seconds.]
Aritheanie has joined #lisp
graphene has joined #lisp
fikka has joined #lisp
graphene has quit [Remote host closed the connection]
rozenglass has joined #lisp
graphene has joined #lisp
vlatkoB has quit [Remote host closed the connection]
lxpz has joined #lisp
pierpal has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
graphene has quit [Read error: Connection reset by peer]
graphene has joined #lisp
fikka has joined #lisp
eschulte has quit [Ping timeout: 252 seconds]
fikka has quit [Ping timeout: 246 seconds]
Jesin has quit [Quit: Leaving]
astalla has joined #lisp
pfdietz has quit [Ping timeout: 245 seconds]
metallicus has quit [Remote host closed the connection]
fikka has joined #lisp
graphene has quit [Read error: Connection reset by peer]
pjb has joined #lisp
fikka has quit [Ping timeout: 252 seconds]
pierpal has quit [Read error: Connection reset by peer]
graphene has joined #lisp
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
fikka has joined #lisp
nirved has quit [Quit: Leaving]
nirved has joined #lisp
shka_ has quit [Ping timeout: 240 seconds]
shifty has quit [Ping timeout: 245 seconds]
pierpal has joined #lisp
fikka has quit [Ping timeout: 240 seconds]
<mfiano> Xach: it means cl-sdl2-imagr has an error in that it assumes trivial-garbagr is available instead of more correctly depending on it
<mfiano> i dont mainyain yhat, but i have commit access and pushed a fix
pierpal has quit [Ping timeout: 272 seconds]
<mfiano> sorry for typos. on mobile
pierpal has joined #lisp
lnostdal has quit [Ping timeout: 272 seconds]
cage_ has quit [Quit: Leaving]
fikka has joined #lisp
<Xach> mfiano: no worries. this affects many projects.
lnostdal has joined #lisp
<johnjay> do you guys use SLIME in emacs?
<Xach> johnjay: i do
<beach> johnjay: You bet.
<johnjay> heh ok
<johnjay> i was trying to figure out what swank was
<johnjay> and i realized that slime was really popular
<Xach> johnjay: it's pretty great
<borodust> what if i want to reexport only some symbols from a certain package, what solutions do I have except for :import-from those symbols and then :export manually later?
fikka has quit [Ping timeout: 244 seconds]
<borodust> uiop:define-package doesn't seem to have a solution for that or i missed it
<Xach> borodust: what do you mean by "manually later"? you can do it in the same defpackage form.
<borodust> yeah, i meant that
<borodust> but that's like duplicating the work
<borodust> i would prefer smth :reexport-from
<Xach> ?? How is defpackage to know what you want to selectively export otherwise?
<borodust> see above
<Xach> borodust: if the symbols are external, you can :use instead.
<Xach> That seems risky to me if the exports may change
<borodust> yes, but i would like to avoid importing whole package for that matter
<johnjay> Xach: ah ok. i was thinking about what an emacs clone in mezzano might look like
<johnjay> and i thought, well do you have to really use a system a lot to clone it or is it kind of irrelevant
<Xach> borodust: yes, understandable. i prefer the low-tech way.
<borodust> Xach: i'm just asking if anyone has a solution for that :p i know it's just a macro away
<johnjay> like, you don't have to use a tractor to repair the engine, you know what im' saying?
<pjb> borodust: if copy-and-paste of the list of symbol names seems untasty for you, you can always use #1=(…) and #1# in the defpackage form!
<borodust> pjb: ;p
<borodust> that actually quite a way :D
<pjb> (defpackage … (:import-from "P" . #1=("S1" …)) (:export . #1#))
<borodust> still a bit uglyish
<beach> johnjay: It might look like (first) Climacs or Second Climacs.
<pjb> Then you can use conduits.
<pjb> or define your own conduit macro.
terpri has quit [Remote host closed the connection]
<johnjay> "Many design choices of Climacs are based more on the editor of the Genera operating system, Zmacs, and the other original Lisp emacsen, such as Hemlock, than on GNU Emacs. "
terpri has joined #lisp
<beach> johnjay: I wrote that? Oh my!
<beach> johnjay: Note that Second Climacs is not usable yet.
<johnjay> beach: if you're the author of climacs... then yes?
<borodust> pjb: hmm, interesting, thanks
<beach> johnjay: I can't believe I wrote "emacsen".
<beach> johnjay: And I know very little about Zmacs, so I would be surprised if I wrote that too.
<beach> johnjay: It looks like people are putting words in my mouth.
<johnjay> beach: there's soem papers at the bottom about syntax analysis in climacs
<johnjay> i guess those coauthors are them
<pjb> beach: that's the standard plural for emacs.
<johnjay> the funny thing is i'm trying to figure out how to download and install it. the INSTALL file says we assume you have already obtained the tar or cvs sources
<beach> pjb: I know, but I never use it.
<beach> johnjay: I see yes. I didn't write that page.
<beach> johnjay: Try (ql:quickload "climacs")
graphene has quit [Read error: Connection reset by peer]
<beach> ... then (climacs:climacs)
<johnjay> that seems to be working
<johnjay> whatever this quicklisp thing is it seems to work really well
<beach> I agree.
<johnjay> so you helped write the original climacs i take it?
<beach> (first) Climacs has been around for some time, so it is naturally in Quicklisp.
<beach> I am the original author, yes.
<johnjay> it's installing mcclim now
<johnjay> that's cool
graphene has joined #lisp
<beach> Once we had McCLIM working, I challenged the community. "So now that we have McCLIM, it could not be too hard to write an Emacs clone, now could it".
gpiero has joined #lisp
fikka has joined #lisp
<beach> Then Athas extracted the Common Lisp mode to "Drei", the input editor of McCLIM.
<johnjay> hrm, got an error when getting mcclim compiled. RENDER-SET-IMAGE-TRANSFORM is not external in the XLIB package
<johnjay> error in clx-image.lisp
<beach> I don't get that error. Sorry this is happening to you.
<beach> You may want to ask jackdaniel.
<slyrus1> is it possible you have an old version of xlib?
<beach> Maybe you need to update CLX?
<slyrus1> clx
<slyrus1> yeah
<beach> like (ql:update-all-the-systems-that-I-have-installed) or whatever it's called.
<johnjay> oh ok
<johnjay> i thought maybe i needed to update sbcl
<johnjay> so i downloaded it and am compiling atm.
<beach> That should not be necessary.
fikka has quit [Ping timeout: 245 seconds]
<beach> I have used McCLIM with very old SBCL versions, and in fact a recent SBCL commit broke McCLIM as I recall slyrus said.
<johnjay> is the command (ql:update-dist "quicklisp") appropriate?
<beach> that or update-all-dists or something like that.
nowhereman has joined #lisp
nowhere_man has quit [Read error: Connection reset by peer]
<johnjay> ah ok. can i do that while it's using sbcl to compile sbcl?
<beach> I wouldn't know.
<beach> Sorry.
<johnjay> oh ok
<johnjay> yeah it's no problem, that jackdaniels guy might know and i'll be around
<dlowe> you won't get the compilation from the newer sbcl
<beach> johnjay: It is clear from the way you refer to jackdaniel, that you have not been attending ELS regularly.
fikka has joined #lisp
<beach> Those of use who do attend, know him very well.
<beach> those of us
<johnjay> beach: i'm just a lowly novice, indeed. elisp and scheme are where i first encountered lisp
<beach> johnjay: Then take my advice, go to ELS in Genoa in April. It will change your life.
<johnjay> the city looks great from what i see of it
<beach> Yes, except for the bridge that collapsed recently.
<johnjay> is ELS anything like 34c3?
<beach> johnjay: You will have tons of new friends that you can visit, or that might come visit you. You might be invited to dinner during ELS. etc.
<johnjay> or is it more casual
<j`ey> that was in spain this year, right?
<beach> Yes.
graphene has quit [Remote host closed the connection]
<j`ey> I think it was the same dates as the Euro LLVM conf
<beach> johnjay: I have no idea what 34c3 might be. ELS is very informal, though it *is* an academic conference, so the papers are peer reviewed.
<johnjay> ah this must be the videos from 2 years ago: https://www.youtube.com/channel/UC55S8D_44ge2cV10aQmxNVQ/videos
<j`ey> no videos from this year?
graphene has joined #lisp
dented42 has joined #lisp
dented42 has quit [Client Quit]
<beach> Not yet. You should poke the people at Ravenpack.
<johnjay> beach: c3 is a popular hacker conference that happened this year, it's sort of like defcon in the US but it's in germany
<johnjay> i wouldn't call it "academic" exactly, although several speakers are
<beach> johnjay: Then that sounds very different.
mindCrime has quit [Ping timeout: 246 seconds]
<beach> For one thing, ELS is Lisp only (though not just Common Lisp)
<johnjay> ah i think this is you? https://www.youtube.com/watch?v=ZJr81DtSwUc
<beach> That's me, right.
mindCrime has joined #lisp
<beach> ELS is about Lisp, and it is a peer-reviewed conference with respect to scientific contents.
<beach> It is no highly-filtering (around 50% of papers accepted) so it is not competitive.
<beach> Just not accepting anything.
<johnjay> cool
kooga has quit [Quit: :]
<beach> The important piece of information (that surprises people who are not used to it) is that a conference is not mainly for authors to present papers to people in the audience, but for people to meet other people.
dyelar has quit [Remote host closed the connection]
slyrus1 has quit [Quit: slyrus1]
<beach> Most people in the audience of my talk were perhaps thinking "yawn, why the hell is he re-implementing LOOP? But he's a cool guy. I'll try to sit at his table during the conference dinner. I know he will pay the bill."
<LdBeth> GG
<j`ey> to meet other people and get bought dinner by them :P
<beach> Exactlly.
<beach> Exactly, even.
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<beach> ELS is a mixture of people with solid employment and people in flux, like students. In fact ELS has a very good student rate.
<LdBeth> Does MIT ver LOOP supports users’ custom extensions?
<beach> j`ey: So if you are a person i flux and you find yourself at a table with people like me, Xof, splittist, etc., it is likely that you will be offered a large part of your share of the bill.
<beach> in flux
<j`ey> unless ELS was in the UK, and stylewarning was there, I'm not into CL enough yet to go :P
<beach> Sorry to hear that. stylewarning will likely be in Genoa, though.
<stylewarning> Italy next year!
<Bike> LdBeth: yeah. dunno how to use it, though.
<j`ey> if stylewarning pays for the flights
cobax has joined #lisp
<beach> j`ey: froggey is creating a crowdfunding site to go. You should do the same.
Jesin has joined #lisp
<j`ey> hah, we'll see if I stick with CL.
<beach> I am definitely going to contribute to froggey. I don't know you well enough to decide yet.
<j`ey> money isn't the real issue :)
<beach> That answer solves one problem then. Thanks.
<j`ey> :P
<beach> It sounded like it when you said "if stylewarning pays for the flights"
<j`ey> just a joke!
<beach> Lost on IRC.
<makomo> j`ey: i've been complaining about the videos for some time now. :-) i've emailed didier verna about it, but it turns out he's the wrong person to ask. he did tell me he would try and put some pressure on the people in charge of the videos though
<makomo> j`ey: i was thinking of mailing Ravenpack (as suggested by beach) soon -- didn't get around to it yet.
<beach> Poor Didier.
<makomo> i could let you know and you could do the same :-)
<makomo> beach: hah :-)
rumbler31 has joined #lisp
<makomo> oh, to be clear, i've only emailed him once. i meant that i complained to #lisp about it :-D
rumbler31 has quit [Remote host closed the connection]
<beach> Every conference has a "person totally in charge", a "program chair" and a "local chair".
<beach> Didier Verna is currently 1.
<beach> The others change every year.
<beach> 3 was Ravenpack this year.
<beach> There is very little 1 can do to force 3 to do the work.
slyrus1 has joined #lisp
<makomo> beach: mhm. it wasn't very clear to me what their roles are and what the relationship between 1 and 3 is
<beach> More clear now?
pierpa has joined #lisp
<beach> When a 3 accepts to do it, we go "oh, wonderful, thank you, thank you"
<makomo> beach: more or less. but how is then 1 "totally in charge" :-)
<beach> He doesn't have much power really. :(
<beach> The local organizers do it for free.
<beach> So we can't really put pressure on them.
<makomo> oh, do the tickets for ELS cost anything?
<beach> they do, but very very little
<beach> It is just to cover the meals and perhaps the rent of the venue.
<makomo> ah, i see. and the other companies listed on the webpage help out by sponsoring the local organizer then?
<beach> Often, we get the venue for free.
<beach> makomo: Correct.
<beach> The student free is so low it often does not even cover the cost of the meals included.
<beach> ELS is one of the best conferences in this respect.
<johnjay> beach: do you know of any currently active projects in CL, other than mezzano?
<beach> johnjay: Is this a joke?
<AeroNotix> hmm, very interesting. Just realised that ELS lines up perfectly next year with my intended cross-Balkans drive
<beach> johnjay: there are tons of active Common Lisp projects.
<makomo> beach: ah, ok
<AeroNotix> I can't believe I missed the one in Krakow.
<AeroNotix> I literally walked past the venue. Had so much work on
<beach> AeroNotix: You might convince phoe to organize it in Krakow as he has hinted.
<beach> AeroNotix: Perhaps even help him out.
<AeroNotix> I need to get my health in order before I take any on any tasks that people would depend on me for
<johnjay> housel: thanks didn't know there was a quicklisp blog
<AeroNotix> johnjay: not sure if github still expose that feature where you can filter projects by language and age of commit
<AeroNotix> or by language and popularity
<johnjay> age of last commit?
<beach> makomo: For instance, Martin Simmons is a sponsor of ELS, a regular attendant, a nice guy to have dinner with, etc.
<AeroNotix> johnjay: yeah
<johnjay> they have a "Recently Updated" option in the search box
<beach> makomo: Oh, and he is the president of LispWorks.
<johnjay> the latest 4 minutes ago is rakugobot/shibuyarakugo-parser, a html parser for eurolive.jp
<AeroNotix> johnjay: there you go, find something that interests you that way
<AeroNotix> https://github.com/search?l=&q=language%3A%22Common+Lisp%22&type=Issues haha, could be a useful thing to just spend a few hours hammering through issues here
gravicappa has quit [Ping timeout: 252 seconds]
bradcomp has quit [Ping timeout: 252 seconds]
astalla has quit [Ping timeout: 244 seconds]
<makomo> beach: it's really nice how a community "feels" different depending on its size. since the lisp community is relatively small, you feel a greater sense of "connectedness" i would say. on the other hand, having a big community has its ups too, like having a bigger ecosystem or similar
<AeroNotix> How many people typically attend an ELS?
mindCrime has quit [Ping timeout: 252 seconds]
Roy_Fokker has joined #lisp
graphene has quit [Remote host closed the connection]
graphene has joined #lisp
bradcomp has joined #lisp
<AeroNotix> I've come to appreciate :package-inferred-system and every-file-is-a-system organization
<no-defun-allowed> Good morning everyone!
<Xach> AeroNotix: between 50 and 100
<AeroNotix> no-defun-allowed: o7
<AeroNotix> Xach: neat
<no-defun-allowed> I can't find Lisp meetups in Australia's
<Xach> no-defun-allowed: there is one every day in #lisp where distance is no object (although time can be)
<no-defun-allowed> *Australia. The closest thing is a "functional programmer meetup" and it's probably just Haskell people jerking each other off and they haven't done anything regular for a year.
<no-defun-allowed> (no, it's not a yearly thing)
<no-defun-allowed> Fine
<johnjay> no-defun-allowed: that sounds like the least attrative haskell meetup i can think of
<no-defun-allowed> It probably is
moei has joined #lisp
<no-defun-allowed> "Listen to some people talk about type theory" haha yes, that's all FP is. Fuck outta here with first class functions and other stuff, it's all types
<no-defun-allowed> Anyways, Lisp isn't fp, blah blah, there's no meetups. There's no meetups in general around here.
<aeth> no-defun-allowed: Common Lisp has types, too.
<no-defun-allowed> Yes but it's not the most important part of Lisp.
<aeth> The most important part of Common Lisp depends on what you're doing, and that's the point of Common Lisp imo.
<no-defun-allowed> <freenode_aet "#'no-defun-allowed: Common Lisp "> Of course type inference is always good but it's probably a bad idea to bring Lisp in if everyone is talking types.
<no-defun-allowed> Once I went into #haskell asking about how to write an article on functional programming and I was attacked for not knowing any Haskell and only Scheme. That wasn't very nice.
<no-defun-allowed> Sorry, something slipped here.
<no-defun-allowed> Of course type inference is always good but it's probably a bad idea to bring Lisp in if everyone is talking types.
<aeth> It goes far beyond type inference.
<no-defun-allowed> Yes, then ML weirdos use type to prove their programs will run and so forth.
<aeth> CL probably has the richest type system of any dynamically typed language and is probably one of the first to support optional gradual typing. The main weakness with respect to types is probably non-generic data structures.
<aeth> You could use the type system in CL to do most of what the ML-derived languages do as far as using types for reliability.
<aeth> I'd say the main problem is that half of that will only work on SBCL and about 0% of it will work on CLISP (okay, check-type probably works there), with the other implementations somewhere between CLISP and SBCL.
<no-defun-allowed> That is true but it's not their way of doing types.
<aeth> no-defun-allowed: Yes, the CL type system is superior. For one, you don't need a graduate degree in mathematics.
<no-defun-allowed> That is very true.
<aeth> For another, it's optional.
Bike has quit [Ping timeout: 252 seconds]
<aeth> And attacking Haskell in particular, CL isn't lazy and doesn't demand immutability in most areas.
<no-defun-allowed> (If the Haskell people realise they didn't need their PhDs to write functional programs, they'd be very upset.)
<pjb> You wouldn't believe the number of PhDs that have been written, just by ignoring lisp.
wheelsucker has quit [Remote host closed the connection]
<no-defun-allowed> Enough said about them then.
<aeth> There are probably places where modern ML-like/Haskell-like languages can do more things with types than CL. I'd like to know those so CL's type system can be extended.
<no-defun-allowed> Someone said I should start one then, but I don't know anyone who would go and I've got no money
<aeth> The CL way to handle a new paradigm is to glue it to the existing Lisp language and pretend like it was there the whole time.
<aeth> I don't know why everyone wants to create new languages.
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
<aeth> If ML-like/Haskell-like languages have something to offer as far as type systems go (and they almost certainly do), extend Lisp and keep the 60 year old tradition going. It worked with OOP.
<aeth> And it'll work with whatever new paradigms come along, too.
<aeth> (I'm not proposing a new standard. CLOS started out as several non-standard extensions to CL, not as part of the standard. It would probably take 5-10 years for it to be worthy of being standard.)
trafaret1 has quit [Ping timeout: 246 seconds]
dented42 has joined #lisp
dented42 has quit [Client Quit]
<no-defun-allowed> I'm not sure where people do meetups around here either.
anewuser has joined #lisp
atgreen_ has quit [Ping timeout: 240 seconds]
<LdBeth> Seems not many fp people interested in integrate OOP
<pjb> Ocaml.
<AeroNotix> Squint at it hard enough and Erlang is OOP :)
<LdBeth> Ocaml or Scala have industrial backgrounds, I think
robotoad has quit [Ping timeout: 240 seconds]
lavaflow has quit [Ping timeout: 244 seconds]
lavaflow has joined #lisp
vydd has joined #lisp
<jasom> LdBeth: It's from INRIA, which is a research institute.
<jasom> LdBeth: OCaml that is
<jasom> And scala is from EPFL
<AeroNotix> I found OCaml far easier and more practical than Haskell
<no-defun-allowed> i think that was the idea
<aeth> AeroNotix: Because it is.
graphene has quit [Remote host closed the connection]
Bike has joined #lisp
<no-defun-allowed> frankly though, if you force your users to specify variable types without a good reason (it's absolutely not inferable, multiple dispatch exists in your lang) and you're doing static typing nowadays, you did something wrong
graphene has joined #lisp
<johnjay> aeth: is your git repo the one called aejsmith?
<johnjay> it was referenced from mezzano i think for kboot
<aeth> johnjay: no
<johnjay> ok. i guess 2 characters is not that much to go on
<aeth> I don't think it's controversial that some languages are hard to learn than others. (Devil's advocate: You only have to learn a language once.)
<aeth> s/hard to learn/harder to learn/
<AeroNotix> aeth: I wasn't being controversial. I was just throwing it out there as a jumping off point
<AeroNotix> aeth: your devil's advocate is technically correct but also technically wrong
<aeth> johnjay: You'll find many name conflicts even with 'aeth'. I like that because in today's world if you use a unique name you'll find far too much too quickly.
<AeroNotix> here's a post which explains it nicely
<AeroNotix> talking about name conflicts, to tag aeth it usually takes me 3-4 times not to tab complete to my self
<pjb> aeth: that's wrong. you have to learn some languages each time you use them. For example C++.
<AeroNotix> pjb: agreed
fikka has quit [Ping timeout: 240 seconds]
fikka has joined #lisp
<aeth> AeroNotix: C++ is a language that's hard to *use*. One could argue that Haskell is a language that's hard to *learn*. But this is getting very off-topic.
<AeroNotix> well it ties into the fact that CL is relatively easy to learn and easy to remember
<AeroNotix> at least for me
<LdBeth> The more you learned, the easier the rest to learn
<AeroNotix> indeed
<AeroNotix> it all logically seems to fit together, designed flowing together as a cohesive unit
<AeroNotix> whereas most languages are all just a series of deviations from a central theme
<aeth> AeroNotix: There are probably lots of corners of CL that you don't know that you don't know.
<aeth> CL does simplify things by having a very minimal syntax, though.
<johnjay> AeroNotix: that errata link is interesting, what's the context be hind it?
<johnjay> *behind
<aeth> Nothing's worse than having to switch between 5 syntaxes in one program
<aeth> Only Lispers see this as a problem.
<AeroNotix> aeth: indeed, I'm absolutely sure of it. The metaobject protocol is something I've literally never used, ever, or even looked into.
<aeth> Switching syntaxes quickly is the source of bugs even if you *know* all of the syntaxes thoroughly
<AeroNotix> johnjay: just the fact that C++ is a write only language
<johnjay> as in you cant' read it?
<AeroNotix> johnjay: have you ever tried to read it?
<AeroNotix> it's gibberish
<LdBeth> Pretty much algorithms written in C++
<johnjay> oh ok. i thought the idea of that post was that scott was just getting old and couldn't concentrate
<johnjay> as opposed to, c++ sux
<LdBeth> But notmuch in CL
<LdBeth> I mean books
<aeth> I'd say the main problem with C++ is syntax inherited from C. For instance, pointers. People have trouble "learning pointers". Pointers aren't hard to understand if you can understand arrays (imo). C *syntax* for pointers is hard.
<aeth> But in general, having to learn syntax to learn features seems wrong.
<aeth> And many people do confuse the feature with the syntax.
<AeroNotix> johnjay: his immediate problem is that he has lost interest but the bigger problem is that, despite being a world renowned C++ expert for years (really, his books are great) he cannot easily read C++ and understand immediately what it does.
<aeth> AeroNotix: several years after stopping using C++
<LdBeth> Forth: DO THIS
<LdBeth> Lisp: (SEND :DO THIS)
<AeroNotix> aeth: sure, several years.
<aeth> AeroNotix: REPL oriented languages like CL seem superior for this sort of thing in general, though. If I want to figure something out in C or C++ or Java, I have to write a skeleton file with all of the necessary boilerplate to get it working. In CL, it usually (but not always) can be done in the REPL.
Essadon has quit [Quit: Qutting]
<aeth> (REPLs exist for all of those languages, but it's not going to help for several reasons. One, the language isn't really designed for REPL usage. Two, those are almost always interpreters that might behave differently in strange corner cases. In SBCL, the REPL just compiles it for you.)
<LdBeth> REPL is integrated into language design
nostoi has joined #lisp
<aeth> What's great about SBCL is that I can disassemble it and see the generated, commented assembly! (DISASSEMBLE isn't guaranteed to work, and only SBCL comments it afaik.)
<aeth> If there are two ways to write something, I sometimes write a foo and a bar with each approach, disassemble them, and see if there's a difference or not.
<LdBeth> That’s also could be viewed as a sad fact because people don’t trust the compiler
<aeth> Is there a way to disassemble a method? I assume that it's a lambda stored with into an object created by defgeneric, or something close to that.
<aeth> I think I've managed to get to the asm via the SLIME inspector before, but that's not ideal.
<aeth> s/stored with into/stored with or into/
<pjb> aeth: nope, most implementations insert comments in disassemble output.
<aeth> pjb: not as many or as frequently as SBCL, or at least last time I checked
<aeth> At the very least, SBCL seems to comment everything of interest
<aeth> Allocations, function calls, etc.
<AeroNotix> When disassemble outputs the addresses of functions/constants, can I use those addresses somewhere to access the object via the pointer rather than the symbol? Always wondered this
<Bike> through internal internals, yeah
<Bike> it'll end in tears
<aeth> AeroNotix: I don't think you can assume that addresses stay constant because of the GC unless it's an object intended for CFFI, in which case it will probably be at a fixed location to prevent problems on the C side.
<aeth> (Although recompiling functions for that probably would be noticable so it probably doesn't happen.)
<AeroNotix> If it's comparing constants, I'd assume it could keep those around in specific places
<AeroNotix> keywords, for example.
<Bike> maybe it does, maybe it doesn't
<Bike> keywords aren't usually accessed from foreign code, so there's no big reason to specially keep them pinned
<AeroNotix> indeed, all implementation specific any way
<aeth> Bike: How do symbols generally work? It's intentionally unspecified, but I wouldn't be surprised if there's a general implementation strategy.
<Bike> what do you mean "how do they work"
<Bike> like how are they laid out in memory?
<aeth> In my head I sort of treat symbols like global enums. So 'foo is really 'my-package::foo which is really 3456673 or something. And I assume that's resolved at compile time if possible (so (whatever :foo) is really working with a fixnum which I cannot directly access)
<Bike> why on earth
<White_Flame> a symbol is just an object reference...
<aeth> Bike: That's an incorrect understanding of it?
<Bike> i don't know of any implementation doing that
<Bike> and i don't see any reason to do that
<White_Flame> or at least, a slot "holding" a symbol should be indistinguishable from "holding" any boxed object
<White_Flame> the only special handling that constrains symbols is the symbol-cons equivalence of NIL
<aeth> White_Flame: so it's just a pointer to an address and usually the address is all that matters because you're mostly using it for EQ?
<Bike> that doesn't even have to be special
<AeroNotix> aeth: strangely that's kind of how atoms work in Erlang (which keywords are analogous to)
<Bike> it is in sbcl, but it's not a requirement
<Bike> aeth: occasionally the data in the pointer, such as pointers to the symbol-name, is useful
<Bike> "the data pointed to" whatever
<White_Flame> aeth: the raw "address" also usually has tag bits
<White_Flame> but it's usually a pointer to an object, not necessarily a pointer to an address
<White_Flame> or are you asking about symbol-value bindings and how those are looked up, rather than the symbol object itself?
nostoi has quit [Quit: Verlassend.]
fikka has quit [Ping timeout: 272 seconds]
jinkies has quit [Ping timeout: 250 seconds]
razzy has quit [Remote host closed the connection]
<jasom> aeth: The way they are usually implemented is that :foo will be resolved to a pointer, but every time you have :foo appear in your code it gets resolved to the *same* pointer, so you can compare just by checking if the pointers are equal (no need to dereference them).
<White_Flame> and if GC moves the :FOO symbol object on the heap, all pointers referring to it will be updated during stop-the-world
<jasom> Bike: there are reasons to resolve symbols to an index in a table rather than a pointer, and it involves moving GC and hash-tables.
<White_Flame> also thread-local binding slots
<jasom> Bike: that being said, I'm not sure if any implementations do this.
<White_Flame> are the issues with symbols + GC + hashtables any different than normal objects + GC + hashtables? Presuambly you're talking about EQ hashtables
<White_Flame> (or EQL, equivalently with objects)
<jasom> White_Flame: well symbols are very commonly used as keys in hashtables
<jasom> an eql hashtable that isn't indexed by a symbol or a number would be rare (maybe character?)
<White_Flame> I always seem to have composite objects as hash tables
<White_Flame> especially since I use them for complex indexing speedups
<White_Flame> *as hash table keys
<jasom> as eql hash table keys?
<White_Flame> composite + interning -> eql hash table; composite -> equalp hash table I guess
fikka has joined #lisp
<jasom> right, and symbols are the most commonly interned object, so it might make sense to optimize the case of symbol hash tables.
<White_Flame> maybe "interning" might be the wrong word here, but given (1 30 :foo), canonicalizing that to a specific EQ-able instance of that list, using that as a key
<jasom> if you hash other composite objects like an equalp hash table, then your implementation is still correct, and you don't need to do any rehashing on GC
<jasom> White_Flame: interning is a good word, there might be better but I followed you
<White_Flame> the one weakness I often hit is the lack of a caching structure for the hash of a composite
<White_Flame> so they're always recomputed
<White_Flame> (at least for equalp tables, kind of crossing issues here I guess)
<White_Flame> so all of this drives me towards implementing my own application-specific key & hashtable implementations :-P
<White_Flame> already have done so for "persistent" (as in pure functional) hash tables
fikka has quit [Ping timeout: 245 seconds]
warweasle has joined #lisp
Kaisyu has joined #lisp
Kaisyu7 has quit [Quit: ERC (IRC client for Emacs 26.1)]
fikka has joined #lisp
dale has quit [Quit: dale]
rozenglass has quit [Ping timeout: 252 seconds]
fikka has quit [Ping timeout: 252 seconds]
vibs29 has joined #lisp
Kaisyu7 has joined #lisp
Lycurgus has joined #lisp
Oladon has joined #lisp
fikka has joined #lisp
bradcomp has quit [Ping timeout: 252 seconds]
ober has joined #lisp
fikka has quit [Ping timeout: 245 seconds]
vibs29 has quit [Ping timeout: 268 seconds]
vibs29 has joined #lisp
fikka has joined #lisp
fikka has quit [Ping timeout: 245 seconds]
lemonpepper24 has quit [Ping timeout: 244 seconds]
atgreen_ has joined #lisp
smokeink has joined #lisp