<Josh_2>
What method do I need to play with when adding new keywords to defclass?
tyson2 has joined #commonlisp
cjb has joined #commonlisp
<pjb>
Josh_2: c2mop:ensure-class-using-class
<Josh_2>
hmm
<Josh_2>
idk
<Josh_2>
You sure its not compute-effective-slot-definition :think:
<Bike>
to defclass? ensure-class-using-class, i think
<Bike>
assuming you mean keywords for the class as a whole, not a slot
<Josh_2>
ah, yes I meant a keyword for a slot, sorry about that
etiago has quit [Ping timeout: 272 seconds]
<Bike>
in that case it needs to be accepted asn an initarg to the direct slot definition class, and you'll probably need to specialize compute-effective-slot-definition to get the information into the effective slot definition as well
<Josh_2>
alright
<Josh_2>
I assume I have to do something with compute-slots as well?
<Josh_2>
I read AMOP and just end up more confused
<Bike>
You shouldn't need to do anything with compute-slots
<Josh_2>
Oh right, I would do that if I wanted to add an extra slot for extra data etc
<Josh_2>
something like that
<Bike>
sure.
<Bike>
here's the basics. a direct slot definition is the particular slot definition for a class - with no inherited information. the direct slot definition is constructed by, essentially, (apply #'make-instance [slightly-modified-slot-specification])
<Josh_2>
ah
<Josh_2>
I see
<Bike>
so if you want to have a slot (foo :initarg :foo :mykeyword baz) you need make-instance to understand :mykeyword
<Josh_2>
:O
<Bike>
Which you can do either by adding a slot to your direct slot definition class, or by specializing one of the instance initialization methods - so basically the same as for any old class
<Bike>
Next, the system will compute an effective slot definition - this is the definition incorporating inherited information
lucerne has joined #commonlisp
<Bike>
For that to work with your new information, you will have to define a method on compute-effective-slot-definition that figures out how to merge the information from all of the direct slot definitions, and puts that in the effective slot object
<Bike>
and that should be about it
<Bike>
I linked it the other day, but you can see an example of this in cl-jupyter, which adds a :trait keyword
<Bike>
you can see the slot definition classes that are defined, as well as methods on effective-slot-definition-class, compute-effective-slot-definition, and direct-slot-definition-class
etiago has joined #commonlisp
<Josh_2>
Okay I'll try that out
livoreno has quit [Read error: Connection reset by peer]
[deleted] has joined #commonlisp
random-nick has quit [Ping timeout: 265 seconds]
<Josh_2>
Do I need both a direct and effective version of my slot?
<Bike>
Probably. Do you understand the difference?
<Josh_2>
No not really
<kakuhen>
Is there a nice way to uninstall packages from quicklisp?
<kakuhen>
I did the mistake of trying out qtools on a Mac and pulled in two dozen dependencies that I don't use or need
<_death>
there is ql:uninstall
<Bike>
Josh_2: Say you have (defclass foop () ((%bar :initarg :bar :type integer))) (defclass fooc (foop) ((%bar :type fixnum)))
<Bike>
Josh_2: there's a direct slot for the %bar in foop, and a different direct slot for the %bar in fooc
<_death>
kakuhen: though I tend to just delete the directories
<Bike>
Josh_2: Then, an effective slot for fooc has the information from both - initarg :bar, type fixnum
<kakuhen>
_death: hmm this doesnt seem to follow dependencies, but I guess that's fine
<kakuhen>
_death: after you delete the folders, is there any additional steps you do?
<kakuhen>
e.g. deleting downloaded archives and the text files?
<Josh_2>
So if I want subclasses of classes defined with my superclass then I need an effective slot as well as a direct slot
<_death>
kakuhen: nope.. looking at the uninstall code it does delete some text files and the local archive, but I never did that
<Bike>
An effective slot is computed whether there are superclasses or not
<Bike>
The effective slot is what's actually passed to slot-value-using-class, etc
<Josh_2>
Well I dont think I will have to specialize slot-value-using-class
<Bike>
No, I'm just saying you need an effective slot anyway
<Josh_2>
oh
<Josh_2>
so I do need both?
<Bike>
Probably
<Bike>
effective slots are what's returned by class-slots, for example
<kakuhen>
_death: I see. Thanks for helping me
<Bike>
i don't know the nature of your customization
<Josh_2>
Okay, I am getting an error saying there is no application method for generic function sb-mop:slot-definition-allocation when called with <my direct slot>
[deleted] has quit [Read error: Connection reset by peer]
<Josh_2>
applicable*
[deleted] has joined #commonlisp
[deleted] has quit [Read error: Connection reset by peer]
[deleted] has joined #commonlisp
<Josh_2>
However I do not see any explicit specializing of this method in your code Bike
<Bike>
does your slot definition class inherit from the standard classes?
srhm has quit [Quit: Konversation terminated!]
<Josh_2>
Opps missed the standard at the start of standard-direct .. etc
<Josh_2>
And it worked!
X-Scale` is now known as X-Scale
lucerne has quit [Remote host closed the connection]
lucerne has joined #commonlisp
<Josh_2>
Thanks for your help Bike! I'm sure I'll be asking for more help tomorrow xD
<Bike>
i am happy to be of assistance
akoana has quit [Quit: leaving]
prxq_ has joined #commonlisp
prxq has quit [Ping timeout: 268 seconds]
Josh_2 has quit [Remote host closed the connection]
taiju has quit [Ping timeout: 244 seconds]
tyson2 has quit [Remote host closed the connection]
mortemeur has quit [Read error: Connection reset by peer]
lucerne has quit [Write error: Connection reset by peer]
pranavats has left #commonlisp [Disconnected: Replaced by new connection]
pranavats has joined #commonlisp
<raeda>
Hi beach
<beach>
raeda: Did you find a Common Lisp system to contribute to? Or a separate project to work on?
<raeda>
I wanted to contribute to ABCL, but life's been getting in the way :(
<beach>
Ah, yes, that tends to happen sometimes.
<raeda>
Instead of retrofitting ABCL with new JVM features, it might be easier to make a JVM backend for SICL though
<beach>
That's an interesting idea. Though SICL is still incomplete.
Lycurgus has quit [Quit: Exeunt]
<beach>
So that's what you want? A Common Lisp implementation running on the JVM?
mayureshkathe has joined #commonlisp
<mayureshkathe>
hello. :)
azimut has quit [Remote host closed the connection]
<beach>
Helly mayureshkathe.
<mayureshkathe>
i am new here, are there any formalities? like introducing self?
azimut has joined #commonlisp
<beach>
Nah.
<beach>
Welcome!
zacts has joined #commonlisp
<mayureshkathe>
hello beach. :)
<susam>
Good morning!
<susam>
Hello beach!
<mayureshkathe>
good morning susam. :)
<susam>
Hey mayureshkathe! Welcome to the channel. :)
<mayureshkathe>
thanks for the warm welcome, susam. :)
<beach>
mayureshkathe: What brings you to #commonlisp?
<mayureshkathe>
just to give an idea; i fiddled with autolisp in 1995 as an engineering intern.
<mayureshkathe>
then didn't work with any lisp till i got interested off-late. :)
<beach>
Oh, interesting.
<mayureshkathe>
i am just learning the ropes, to the extent of learning emacs too.
<susam>
mayureshkathe: How did you get back to Lisp recently?
<mayureshkathe>
i've been a "vi" guy till date.
<mayureshkathe>
susam, i read the digital edition of "on lisp" by graham.
<mayureshkathe>
or rather only the introduction for it.
<mayureshkathe>
and was rather enamoured by a language that has been stable for so long.
<beach>
mayureshkathe: On Lisp is an advanced book about Common Lisp macros. I suggest you start with something like Practical Common Lisp.
<mayureshkathe>
i am actually starting off with "computer science logo style" to work with a lisp which has an approachable syntax for someone coming-in from the world of c++.
<mayureshkathe>
then i'll be working through "simply scheme" by harvey
<mayureshkathe>
followed by 'sicp'.
<mayureshkathe>
once i get confident about thinking in the functional way, i'll get to common lisp.
<beach>
That's a very strange road, especially since Common Lisp is not used much for functional programming.
<mayureshkathe>
though, if i fail, i'll be working through that book by touretzky to start-off afresh.
<mayureshkathe>
beach, common lisp isn't used for functional programming? what paradigm is the prefered one then?
<beach>
Touretzky's book is not very good if you already know something like C++. I honestly suggest PCL.
<raeda>
welcome, mayureshkathe. +1 for Practical Common Lisp
<mayureshkathe>
ah, okay, seibel is said to be coming out with 2e of PCL.
<mayureshkathe>
hello raeda. :)
<beach>
mayureshkathe: Well, Common Lisp is multi-paradigm. You will see functional programming in things like macro expanders. Otherwise, modern Common Lisp code uses Common Lisp-style object orientation using CLOS generic functions.
<susam>
Nice. I have a similar story. I learnt CL out of curiosity 14 years ago. Did not really do anything serious with it. Used Python for writing most of my personal tools. C, C++, and Python at work.
<susam>
Then two things happened. (A) Someone at work wrote a DSL engine to specify correlation rules to analyze the data we were dealing with. It was a complicated piece of code and quite difficult to maintain. It immediately occured to me that this DSL could have been much simpler in CL.
<susam>
(B) I also began to get tired of Python. Every upgrade of dependency packages has the potential to break things. I am older now. I don't have the time or energy to fix breakages introduced by other developers because they don't care about backward compatibility anymore. CL's and its ecosystem's remarkable stability attracted me.
<mayureshkathe>
true that susam, CL does seem to be very stable.
<mayureshkathe>
i mean, i even got tired of c++ with it's frequent version upgrades, though once in every 4~5 years.
<beach>
Yes, C++ evolution seems to be on a suicide path.
<mayureshkathe>
i don't know where the software development world is headed at.
<susam>
C++ keeps getting more and more complex. C++03 itself was complex enough. C++11 was good and I think it could have stopped there.
<mayureshkathe>
it's like everybody is trying to come up with their own language and via for mind space.
<mayureshkathe>
and every language is trying to be like every other.
<beach>
So, I recall Autodesk having a project to convert AutoCAD to Common Lisp, and they even started advertising for Common Lisp programmers. But the project was apparently canceled.
<mayureshkathe>
though most are converging-in on the path of CL.
<mayureshkathe>
beach, did you know, now a days, AutoCAD has dotnet-based languages along with AutoLisp?
<susam>
One of my favourite C++ jokes: https://i.imgur.com/3wlxtI0.mp4 . It really drives the point how much there is for a beginner to learn in C++.
<beach>
mayureshkathe: I did not know.
<mayureshkathe>
susam, that one was funny.
<mayureshkathe>
beach, one of my school classmates worked for AutoDesk on C# integration for AutoCAD.
<susam>
By the way, there is #lispcafe for off-topic chat but not all my favourite people of this channel hang out there. What is the channel's opinion on off-topic chat like this? Okay when otherwise silent? Not okay?
<beach>
A phrase or to in order to understand context is OK, but no longer discussions.
<mayureshkathe>
okay, sorry to have triggered this one.
<beach>
No, Autodesk is a fascinating case.
<beach>
I would like to understand some day why their Common Lisp attempt failed.
<mayureshkathe>
I believe it must've been because common lisp might have become an overkill.
<beach>
Or, rather, who made the decision and why.
<loke[m]>
beach: probably because they didn't try enough (not enough buy-in, causing fragmentation internally). That's the usual explanation.
<beach>
"overkill"?
<mayureshkathe>
multi-paradigm!
<beach>
loke[m]: Yes, that would be my guess. But it went as far as announcing positions.
<mayureshkathe>
they just need an extension language, something like elisp for emacs.
<beach>
mayureshkathe: yes, functional, imperative, "object oriented" (but not C++-style).
<loke[m]>
beach: That sure sounds like internal fragmentation to me. One hand announcing something the other hand is still working on.
<beach>
yeah.
<mayureshkathe>
beach, agree about C++, but OO is definitely an overkill for an extension language.
<mayureshkathe>
that is till they came up with C# for the same purpose.
<mayureshkathe>
which was 11 years back.
<loke[m]>
mayureshkathe: why? The object orientation features should be the core of the extension API.
<moon-child>
does anyone know of coroutine libraries for lisp, portable or otherwise?
<beach>
mayureshkathe: That's part of my problem with it. Writing software in (say) a static language and then using Lisp as an extension language is like the words combination.
<mayureshkathe>
beach, that's how AutoCAD is, they needed to also focus on responsiveness.
<beach>
mayureshkathe: You will get a much nicer, faster, and more maintainable system if you write everything in Common Lisp.
peterhil has quit [Ping timeout: 265 seconds]
<mayureshkathe>
beach, much nicer, more maintainable, yes, but faster, i doubt.
<beach>
Oh, definitely faster.
<loke[m]>
Is there a current issue with the version of static-vectors in QL and the latest version of SBCL? It appears static-vectors is trying to access SB-KERNEL:SYSTEM-AREA-UB8-FILL which is not available in recent SBCL
<mayureshkathe>
though, i had once noticed a cmucl implementation of a numerics library that far outperformed the c counterpart.
<beach>
mayureshkathe: As I often say, it is impossible to write a C++ program that is both modular and fast. And since modularity would be a requirement for such a large project, there is no way the code can be fast.
<mayureshkathe>
beach, yes, i understand that.
<beach>
mayureshkathe: Plus, combining a static and a dynamic language creates a maintenance nightmare.
<mayureshkathe>
beach: true that, our mechanical engineers at l&t used to rip out their hair at times while sharing AutoLisp code.
lucerne has joined #commonlisp
<beach>
mayureshkathe: Several projects I have known in the past chose C++ "because the compiler is known to generate fast code", but then to keep sane, the developers introduce smart pointers and reference counters, thereby slowing down the code by a factor 10 or so compared to the equivalent Common Lisp code.
<mayureshkathe>
another off-topic question; if my aim is to work with common lisp just as a hobby, would it make sense to migrate to LispWork from SBCL under Windows?
<beach>
mayureshkathe: But they still think their system is as fast as it can be, because, after all, the C++ compiler is known to generate fast code, right?
<susam>
Sounds totally on topic to me :)
<mayureshkathe>
susam: :)
peterhil has joined #commonlisp
<mayureshkathe>
i am really uncomfortable with emacs.
<mayureshkathe>
probably because i'm so used to regular code editors like visual studio.
<mayureshkathe>
though visual studio is an 'ide'.
zacts has quit [Quit: gtg]
<mayureshkathe>
is cmucl dying out, i don't even see a package under ubuntu.
<mayureshkathe>
though freebsd only has cmucl and not sbcl.
<moon-child>
? there's sbcl on freebsd
<mayureshkathe>
moon-child: in the ports and packages!
<mayureshkathe>
wasn't there the last time i checked 2 years back.
<mayureshkathe>
actually since 2003. see "port-added" section.
<mayureshkathe>
golly, how could i've missed it?
<mayureshkathe>
okay, in the meanwhile, i took a decision, i'm sticking with ubuntu + sbcl + emacs + slime
<mayureshkathe>
i just remembered that i have a "happy hacking keyboard" stashed away.
<mayureshkathe>
the control key is in the right location for use with emacs.
<susam>
mayureshkathe: I switched to Emacs after 18 years of Vim. I like it. It is just took a while to become comfortable with it.
<edgar-rft>
mayureshkathe: Ubuntu is based on Debian packages and if I remember right then CMUCL was dropped from Debian because it can't be automatically built by C-style autotools. Raymond Toy complained about this some time ago.
<moon-child>
I remain halfway between emacs and vim. And started working on my own texteditor so we'll see what happens
<mayureshkathe>
susam: right, i figured that too, also that 'hhk' would help a lot.
<susam>
The main reason I switched was because I was using Emacs + SLIME for Lisp already which gradually kept exposing me to Emacs' other features. Over time I realized that I could be equally productive with Emacs if I were to use it fulltime.
<moon-child>
edgar-rft: doesn't debian ship a lot of non-autotools-based packages, though?
<mayureshkathe>
edgar-rft: does that mean sbcl can be built with c-style autotools?
<edgar-rft>
One of the main reasons why SBCL was forked from CMUCL is because the CMUCL build process needs to be hand-tuned and is a bit whacky.
<mayureshkathe>
ah, okay.
<mayureshkathe>
also heard that they did a lot of clean-up under sbcl!
<edgar-rft>
yes, lots of the hand-tuned CMUCL assembly code was rewritten in C
<jackdaniel>
beach: speaking of c++: this language is less than the sum of its parts (i.e there are numerous sensible parts of c++ but put together they don't really play)
<loke[m]>
beach: at the same time Fortran is shaking its head, looking from the side.
<mayureshkathe>
ah, now i understand why cmucl was so much faster that c
<edgar-rft>
mayureshkathe: CMUCL is probably faster in some aspects but SBCL is *much* easier to maintain
<beach>
Heh!
<mayureshkathe>
beach: there was a numerical processing system written in cmucl which was way faster than all those written in c.
<mayureshkathe>
okay, time for me to go. nice chatting-up with you folks. catch up tomorrow.
<moon-child>
I find it doubtful you can do numerical processing way faster than any existing solution; the bottleneck is generally memory bandwidth, and when it's not it's usually the hardware's numerical capacity
<mayureshkathe>
bye
<mayureshkathe>
moon-child: check out unum-3 and posits
mayureshkathe has quit [Quit: Leaving]
<edgar-rft>
CMUCL definitely is a great piece of work but the practical problem is that with today's multi-core and multi-level-cache CPUs mainaining *fast* assembly code is a real challenge. The low-level hardware has become a lot more complex than it was at the times when CMUCL had started.
<moon-child>
I don't know as it's more challenging per se, but the performance characteristics have definitely changed
bpanthi977 has quit [Remote host closed the connection]
Inline has quit [Quit: Leaving]
<raeda>
What are people's opinions on Lem? I'm not an Emacs power user so the two are pretty much the same for me
ibinderwolf has joined #commonlisp
<coat>
What does Lem stand for? Lisp Editor Macros?
<flip214>
I only know Stanislaw Lem
rgherdt has joined #commonlisp
killsushi has joined #commonlisp
<beach>
<beach>
raeda: It looks like a pretty traditional Emacs clone to me, except that it is written in Common Lisp, of course.
froggey has quit [Ping timeout: 240 seconds]
<beach>
raeda: The result of that is that it will inevitably be missing lots of Emacs features, while not providing a substantial improvement to editing Common Lisp code.
<beach>
raeda: I haven't used it myself, though. Just looked at the cde.
<beach>
code.
<beach>
raeda: On the other hand, we are working (very slowly) on an editor that we hope will provide a much better experience with editing Common Lisp code, namely Second Climacs.
froggey has joined #commonlisp
<beach>
Again, even when configured to look like Emacs, it will obviously lack tons of features of Emacs, but at least it will have the advantage over Emacs for editing Common Lisp code.
<coat>
does Lem support CL as a configuration language? the readme does not say a lot about the kind of things curious folks would like to know.
<coat>
one thing I like about Emacs is that it is first and foremost an Emacs Lisp interpreter and Emacs, the editor, the UI, etc. are coded in that Emacs Lisp interpreter. so Emacs Lisp interpreter starts first and executes the editor.
<beach>
coat: Since the entire thing is written in Common Lisp, it would be surprising if you couldn't modify it in arbitrary ways.
<coat>
does Lem have a similar design?
<coat>
beach: ok
<beach>
Lem uses existing Common Lisp implementations.
<beach>
Which is a better design in my opinion than Emacs Lisp. Though things were different when Emacs was written, so this is not an accusation of bad design.
<beach>
I frequently quote (from memory) my email to RMS when he announced GNU Emacs. I wrote something like "I think it would be much better to first write a real Lisp system, and then write Emacs in it" (as I had experience from with Multics Emacs), to which RMS answered "Sounds good. Let me know when you have implemented it".
<White_Flame>
are you going to mail him again when SICL is done?
<beach>
I might :)
<beach>
He doesn't like Common Lisp, though.
<beach>
I am not sure he remembers that I was the author of that mail, but I have met RMS a few times much later, and he was in fact an invited guest of our department for I think two weeks at some point.
<White_Flame>
if you still have that email, you could just construct a quoted reply
<beach>
I may actually have it somewhere.
cjb has quit []
sabra has quit [Remote host closed the connection]
sabra has joined #commonlisp
amb007 has quit [Ping timeout: 258 seconds]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
Oladon has quit [Quit: Leaving.]
lucerne has quit [Remote host closed the connection]
Cymew has joined #commonlisp
leeb_ has joined #commonlisp
leeb has quit [Ping timeout: 265 seconds]
ibinderwolf_ has joined #commonlisp
ibinderwolf__ has joined #commonlisp
ibinderwolf has quit [Ping timeout: 258 seconds]
ibinderwolf_ has quit [Ping timeout: 265 seconds]
Duuqnd has joined #commonlisp
mayureshkathe has joined #commonlisp
<mayureshkathe>
hello, again. :)
<beach>
Welcome back.
amb007 has quit [Ping timeout: 252 seconds]
<mayureshkathe>
:)
<mayureshkathe>
beach: you're still awake?
amb007 has joined #commonlisp
<beach>
mayureshkathe: My day has just begun.
taiju has quit [Remote host closed the connection]
<mayureshkathe>
beach: where are you at?
taiju has joined #commonlisp
<beach>
Bordeaux.
<mayureshkathe>
that's France, right?
<beach>
Colleen: time in Bordeaux
<Colleen>
The time in Bordeaux is 2021.06.23 09:17:59.
<beach>
Yes, that's France.
<mayureshkathe>
I'm in the land of snake charmers. ;)
<beach>
Hmm. Does it have a different name, too?
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
<mayureshkathe>
The land of the seven rivers.
<mayureshkathe>
a.k.a. India.
<mayureshkathe>
:)
<beach>
I see.
lucerne has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<edgar-rft>
In IRC, France and India are just around the corner :-)
<mayureshkathe>
:D
<mayureshkathe>
where are you at edgar-rft?
<edgar-rft>
South-West Germany, I can walk to France with my own feet :-)
<mayureshkathe>
:D
<edgar-rft>
but Bordeaux is a little bit too far for my feet
Quasus has joined #commonlisp
zacts has joined #commonlisp
zacts has quit [Client Quit]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
kakuhen has joined #commonlisp
kakuhen has quit [Changing host]
kakuhen has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<kakuhen>
so i decided to look into libfixposix a bit more and now i have ruled out using io-lib for anything
<kakuhen>
did the mistake of testing libfixposix on mac os, and caused an annoying error that had to make me reinstall my os
<kakuhen>
earlier today i also tried out qtools, and that also failed, though in a considerably more graceful manner than the io-lib stuff.
Duuqnd has quit [Read error: Connection reset by peer]
Duuqnd has joined #commonlisp
<beach>
kakuhen: I strongly recommend you work in/on software using only Common Lisp.
<kakuhen>
well I was looking at my options for GUI toolkits in common lisp, just out of curiosity
<kakuhen>
Yes, yes, I'm aware McCLIM exists, but I don't quite like the appearence
<beach>
I strongly recommend McCLIM for that.
<kakuhen>
heheh
<beach>
Then work on changing the appearance (but that is also being worked on) rather than taking on a huge foreign library will all the work that implies.
<kakuhen>
A lot of alternatives to McCLIM I found ends up using FFI voodoo to get the job done, except for Ltk
<kakuhen>
Ltk is very interesting because your lisp image just talks to the tcl interpreter, so there's no random ffi issues to worry about there
<kakuhen>
but it's also less "potent" than McCLIM.
<beach>
McCLIM is being actively worked on, and it is getting better by the day. If more people put in a small amount of work (like another "look"), then others will benefit as well, and we will have a truly great GUI library.
<kakuhen>
maybe I'll give mcclim a shot
<kakuhen>
anyway, CAPI from LispWorks looks very interesting, though I'm not sure if I want to spend $1,500 just to mess around with it :x
<beach>
Good. Also the #clim IRC channel is very active and help is given when people have questions.
<mayureshkathe>
beach: is the clim channel on this network?
<beach>
Yes.
<beach>
jackdaniel is the main maintainer, but several other people are working on it too.
hendursa1 has joined #commonlisp
hendursaga has quit [Ping timeout: 244 seconds]
lucerne has quit [Remote host closed the connection]
derelict has quit [Ping timeout: 252 seconds]
Duuqnd has quit [Remote host closed the connection]
Duuqnd has joined #commonlisp
<mayureshkathe>
okay, i gotta go have lunch.
<mayureshkathe>
see you guys in a bit.
mayureshkathe has quit [Quit: Leaving]
peterhil has quit [Ping timeout: 252 seconds]
ibinderwolf has joined #commonlisp
ibinderwolf_ has joined #commonlisp
ibinderwolf__ has quit [Ping timeout: 268 seconds]
ibinderwolf has quit [Ping timeout: 268 seconds]
tfb has joined #commonlisp
tfb has quit [Client Quit]
taiju has quit [Ping timeout: 240 seconds]
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
prxq_ is now known as prxq
taiju has joined #commonlisp
lucerne has joined #commonlisp
<kakuhen>
are heap images architecture-dependent or just the lisp kernel?
<phoe>
they are
<phoe>
a x86_64 image usually will not contain functions with arm assembly
<phoe>
since, uhhhh, it kind of misses the point?
<kakuhen>
ok i suspected as much, but now how does one introduce a common lisp implementation on another architecture? assuming the lisp kernel can be built for it and it works.
<phoe>
cross compilation, as always
shka has joined #commonlisp
<kakuhen>
that's where i get confused
<phoe>
or you bootstrap ECL there and use it to load the SBCL compiler that then compiles a SBCL heap image
<kakuhen>
ok i guess some CLs are easier to bootstrap than others hehe
<phoe>
ECL is compilable with just a C compiler, so bootstrapping is relatively easy
<phoe>
as for cross compilation, I don't know why there is an issue understanding it
<kakuhen>
I was wondering theoretically, say CCL has a lisp kernel for freebsd-arm64 (they don't, but suppose one could be made)
<kakuhen>
then is there some built-in function to cross-compile here?
<kakuhen>
i would assume using the arm lisp kernel is necessary to create the heap image
<phoe>
no, why?
<phoe>
the image is just a big heap of bytes produced by the compiler
<kakuhen>
i guess i dont understand the bootstrapping process, yet
<phoe>
if you tell the compiler to produce a heap of bytes made by the arm backend, you'll get an arm image
<phoe>
the compiler doesn't care, it just turns Lisp code into bytes
<kakuhen>
ok I think I understand it now
<phoe>
and the compiler knows how to make arm64 code no matter which architecture it is running on - it's just a program like everything else
<kakuhen>
yeah I just didn't understand the role of the lisp kernel in introducing a cl implementation to another arch
<phoe>
when you tell a compiler that's running on an amd64 machine to pop out an bit of arm assembly it's not like the FBI is gonna want to know your location
<phoe>
a kernel is the part that interfaces with the OS and performs garbage collection, in most cases
<kakuhen>
right
<phoe>
it is also there to load the lisp image into memory and unpack it and jump to it
kevingal has joined #commonlisp
lucerne has quit [Remote host closed the connection]
lucerne has joined #commonlisp
killsushi has quit [Quit: Leaving]
azimut has quit [Remote host closed the connection]
azimut has joined #commonlisp
ibinderwolf has joined #commonlisp
ibinderwolf_ has quit [Ping timeout: 265 seconds]
amb007 has quit [Read error: Connection reset by peer]
ibinderwolf_ has joined #commonlisp
amb007 has joined #commonlisp
Duuqnd has quit [Remote host closed the connection]
ibinderwolf has quit [Ping timeout: 265 seconds]
Duuqnd has joined #commonlisp
lucerne has quit [Read error: Connection reset by peer]
<flip214>
hmmm, ,@ (MAPCAR #'QUOTE forms) doesn't work.... How would a macro quote a list of forms, individually?
<phoe>
QUOTE is not a function
<phoe>
,@(loop for form in forms collect `',form) maybe?
<phoe>
or could you provide some example input data and output form?
<jmercouris>
(defmacro salmon (tomato) `(,tomato)) -> NOT ILLEGAL
<jmercouris>
I seem to recall phoe teaching me something about not needing to use backticks at all in a defmacro
<jackdaniel>
backquote is a syntactic sugar for the reader, it is not specified as a lisp form (unlike quote which is specified as a lisp form - also it is not a mere syntactic sugar)
lucerne has joined #commonlisp
<jmercouris>
there was some article or something showing how macro functions are just regular functions
<jmercouris>
it was a good article, I just can't remember it
<jmercouris>
so what exactly is a backtick then?
<jmercouris>
what does the reader do when it encounters it?
<jmercouris>
it doesn't specify how this mechanism works
<phoe>
jmercouris: read the sources of fare-quasiquote
<jmercouris>
phoe: OK!
<jackdaniel>
you may notice, that this section is part of 2.4 standard macro characters
<jackdaniel>
as of how it is imlemented - it is implementation dependent
<jackdaniel>
i.e cltl2 appendix suggests an implementation based on a special form but that's not always the case
<jackdaniel>
reader may simply imlpement semantics described in /the second entry of http://l1sp.org/search?q=%60/ and get over with it
yitzi has joined #commonlisp
<jackdaniel>
as of fare-quasiquote it takes one interpretation of the backquote specification (following cltl2 appendix that is /not/ part of the standard) and claims that it is the only correct interpretation
rgherdt has quit [Ping timeout: 244 seconds]
<jmercouris>
I see; thanks
rgherdt has joined #commonlisp
ibinderwolf has joined #commonlisp
ibinderwolf__ has joined #commonlisp
ibinderwolf_ has quit [Ping timeout: 252 seconds]
ibinderwolf has quit [Ping timeout: 265 seconds]
lucerne has quit [Read error: Connection reset by peer]
knobo has quit [Quit: Client closed]
lucerne has joined #commonlisp
Guest6382 has joined #commonlisp
<Guest6382>
Saw some mention of LEM in the log - is it an acceptable solution for day to day coding?
<Guest6382>
e.g. does it have paredit / slime working nicely
<phoe>
it does not need slime
<phoe>
you don't need to connect to the CL image if you are the CL image
<Guest6382>
oh ok
<Guest6382>
does it have paredit?
<phoe>
I don't know, never used it
<Guest6382>
cool thanks
<Guest6382>
I can see the benefit - I'm starting to explore building apps in Emacs directly, but having a CL base is better than Emacs to some degree (although you can run CL code directly from Emacs)
ibinderwolf has joined #commonlisp
ibinderwolf__ has quit [Ping timeout: 258 seconds]
cage has joined #commonlisp
Bike has joined #commonlisp
taiju has quit [Quit: Quit]
taiju has joined #commonlisp
patience_ has joined #commonlisp
rgherdt has quit [Remote host closed the connection]
aeth has quit [Ping timeout: 252 seconds]
aeth has joined #commonlisp
ibinderwolf_ has joined #commonlisp
Oddity has joined #commonlisp
ibinderwolf__ has joined #commonlisp
ibinderwolf has quit [Ping timeout: 265 seconds]
ibinderwolf_ has quit [Ping timeout: 250 seconds]
ibinderwolf has joined #commonlisp
ibinderwolf__ has quit [Ping timeout: 250 seconds]
amb007 has quit [Read error: Connection reset by peer]
<beach>
As I recall, Maclisp had a function KWOTE that wrapped an object in (QUOTE ...).
<coat>
phoe: read that you don't use Paredit. how do you manipulate the s-expressions? Say you type (concatenate 'string a b) and then you realize that you want to create a (let ...) expression and put the (concatenate ...) inside (let ...). how do you do that easily?
<beach>
coat: C-M-b
<beach>
C-M-b (let ... C-M-f )
ibinderwolf has joined #commonlisp
<coat>
beach: yes, that works. thanks. I guess I am so used to paredit that human beings have been writing code without paredit too.
<coat>
beach: do you use paredit or any other s-exp manipulation plugin?
Inline has quit [Quit: Leaving]
ibinderwolf__ has quit [Ping timeout: 258 seconds]
Inline has joined #commonlisp
<pjb>
coat: even in c-mode sometimes!
<coat>
err... my last message is screwed up. I meant, I am so used to paredit that I forgot human beings have been writing code without paredit too.
<coat>
pjb: how does c-mode help in editing s-exp?
<beach>
coat: I use only the existing Emacs S-expression functions. There are quite a few of those as you can see.
<pjb>
coat: not at all. But paredit can also help editing c-code; at least c-expressions.
<coat>
beach: so long time Lisp programmers like you, how did you avoid using Paredit? almost any Emacs + SLIME tutorial I pick recommends paredit. Even Portacle comes with Paredit enabled. how did you never feel tempted to use Paredit?
<beach>
I tried it, and found it very confusing.
<coat>
beach: was it that you began doing Lisp when Paredit was not popular yet? or you began doing Lisp your own way and never bothered with Paredit because vanilla Emacs itself was sufficient?
remexre has quit [Read error: Connection reset by peer]
<coat>
beach: okay. makes sense. I found it confusing too. to be honest, I don't use much of paredit anyway. slurp and barf are the only two things I use
<beach>
But yes, I used Lisp long before paredit existed.
<coat>
okay
<phoe>
coat: I use smartparens
<phoe>
"never used it" - oops, I meant LEM
<coat>
I still forget though which key is barf and which one is slurp
<phoe>
I use smartparens heavily, along with rainbow-delimiters
<coat>
phoe: okay. I misunderstood that you never used paredit. have you used paredit? do you like smartparens more?
attila_lendvai has joined #commonlisp
remexre has joined #commonlisp
<susam>
coat: I have a little mnemonic to remember slurp and barf. C-) is slurp because ) is nice and round like a belly. Thus C-) makes the parentheses grow outwards and consume the next s-exp and put it inside the belly. Nom! Nom! C-} is curly and ugly and barfs out s-exps from its belly.
<susam>
coat: of course, that is how I started when I used to get confused. Now it is all muscle memory, so I don't really need the mnemonic anymore.
<phoe>
well
<phoe>
to be honest, I never used paredit either
babylon is now known as mariari
<coat>
susam: nice one! i don't think I will forget C-) for slurp anymore! :)
<splittist>
phoe: how much customization do you (have to) do to smartparens?
<coat>
phoe: do you customize rainbow-delimiters colors? the default ones all look very faded and very similar to each other? do you change its colors so that they become more visibile and easy to pair up?
<phoe>
zenburn + the following colors, #f99 #ff9 #9f9 #9ff #69f #f9f
<coat>
phoe: looks nice. I should also customzie to put bright colors like this. why do you have two consecutive parens inside (cond ...) colored the same? There are two consecutive parens both colored green. Did you decide that? or is rainbow doing that?
<phoe>
the second one is cyan
<splittist>
phoe: thanks.
<phoe>
splittist: oh wait
<phoe>
you meant smartparens, not rainbow-parens
<phoe>
I use spacemacs which bundles them by default; I don't know how much it customizes
<coat>
Is this the code to customize rainbow-delimiters: (set-face-foreground 'rainbow-delimiters-depth-1-face "#f99") ? Seems to work but want to be sure.
<patience_>
A strange thing that I expected to work, but then didn't was using a symbol generated by gensym in a macrolet that was nested in a macro: https://pastebin.com/5j961anx
mister_m has joined #commonlisp
<beach>
patience_: That happens when you try to use a variable at compile time, but its lexical binding is available only later, at run time.
bpanthi977 has quit [Remote host closed the connection]
<patience_>
That is so very hard to wrap my head around.
peterhil has joined #commonlisp
<pjb>
patience_: in your case you want to use ,',sym This is a comon pattern in double backquote expressions.
<beach>
pjb: Ah thanks, I was just about to try to figure out what was meant.
<patience_>
pjb: Ah thanks. That makes sense. I see what is happening now.
<pjb>
as you can see, you need to wrap sym in a (list 'quote sym) this is waht ,',sym does when you use backquotes.
<patience_>
I can see that I was trying to use an unquoted symbol in my macrolet, which means that it was trying to use the value bound to the symbol. Is definitely a tricky thing to hold in the head haha
<patience_>
Thanks for the indepth explanation
bpanthi977 has joined #commonlisp
Guest6382 has quit [Quit: Connection closed]
ibinderwolf has quit [Read error: Connection reset by peer]
srhm has joined #commonlisp
Cymew has quit [Ping timeout: 265 seconds]
Josh_2 has joined #commonlisp
Josh_2 has quit [Remote host closed the connection]
aeth_ has joined #commonlisp
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
aeth_ is now known as aeth
amb007 has quit [Ping timeout: 252 seconds]
Josh_2 has joined #commonlisp
amb007 has joined #commonlisp
<Josh_2>
Hey hey
aeth_ has joined #commonlisp
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
aeth_ is now known as aeth
amb007 has quit [Ping timeout: 250 seconds]
amb007 has joined #commonlisp
Posterdati has quit [Remote host closed the connection]
Posterdati has joined #commonlisp
derelict has joined #commonlisp
yitzi has joined #commonlisp
peterhil_ has joined #commonlisp
peterhil has quit [Read error: Connection reset by peer]
Quasus has quit [Ping timeout: 258 seconds]
varjag has joined #commonlisp
peterhil_ has quit [Quit: Must not waste too much time here...]
peterhil has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
ec has joined #commonlisp
Quasus has joined #commonlisp
tyson2 has quit [Ping timeout: 258 seconds]
<bpanthi977>
patience_: (setf ,',sym ,y) try this
bpanthi977 has quit [Quit: bpanthi977]
Duuqnd has quit [Remote host closed the connection]
Duuqnd has joined #commonlisp
Guest63 has joined #commonlisp
d4ryus has quit [Quit: WeeChat 3.2]
tyson2 has joined #commonlisp
Guest63 has quit [Quit: Ping timeout (120 seconds)]
d4ryus has joined #commonlisp
Guest63 has joined #commonlisp
Duuqnd has quit [Remote host closed the connection]
Duuqnd has joined #commonlisp
davep has quit [Quit: Connection closed for inactivity]
Quasus has quit [Ping timeout: 268 seconds]
dsk has quit [Ping timeout: 252 seconds]
Guest63 has quit [Ping timeout: 258 seconds]
Steeve has joined #commonlisp
peterhil_ has joined #commonlisp
peterhil has quit [Ping timeout: 258 seconds]
Quasus has joined #commonlisp
shka has quit [Ping timeout: 252 seconds]
<Josh_2>
Slow day today
tfb has joined #commonlisp
raeda has quit [Ping timeout: 258 seconds]
derelict has quit [Ping timeout: 244 seconds]
tfb has quit [Client Quit]
aeth_ has joined #commonlisp
aeth has quit [Ping timeout: 250 seconds]
aeth_ is now known as aeth
minion has joined #commonlisp
minion has quit [Remote host closed the connection]
minion has joined #commonlisp
minion has quit [Remote host closed the connection]
minion has joined #commonlisp
specbot has joined #commonlisp
peterhil_ has quit [Ping timeout: 250 seconds]
peterhil has joined #commonlisp
specbot has quit [Remote host closed the connection]
minion has quit [Remote host closed the connection]
minion has joined #commonlisp
specbot has joined #commonlisp
minion has joined #commonlisp
minion has quit [Excess Flood]
<jmercouris>
sure is
<jmercouris>
hello Josh_2
j3pic has joined #commonlisp
<Josh_2>
Hey jmercouris
j3pic has left #commonlisp [#commonlisp]
j3pic has joined #commonlisp
IAmRasputin has quit [Ping timeout: 265 seconds]
attila_lendvai has quit [Ping timeout: 252 seconds]
derelict has joined #commonlisp
derelict has quit [Client Quit]
bhaible has joined #commonlisp
remexre has quit [Quit: WeeChat 3.0.1]
kakuhen has joined #commonlisp
kakuhen has quit [Changing host]
kakuhen has joined #commonlisp
j3pic is now known as VFR
[deleted] has quit [Ping timeout: 252 seconds]
livoreno has joined #commonlisp
remexre has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
minion has joined #commonlisp
specbot has joined #commonlisp
minion has quit [Excess Flood]
specbot has quit [Remote host closed the connection]
aeth has quit [Ping timeout: 246 seconds]
yitzi has quit [Quit: Leaving]
aeth has joined #commonlisp
Inline has quit [Quit: Leaving]
Inline has joined #commonlisp
ec has quit [Ping timeout: 244 seconds]
akoana has joined #commonlisp
derelict has joined #commonlisp
CrashTestDummy2 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
CrashTestDummy has quit [Ping timeout: 268 seconds]