jmdaemon has quit [Read error: Connection reset by peer]
jmdaemon has joined #commonlisp
ehammarstrom has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 244 seconds]
Lord_of_Life has joined #commonlisp
ehammarstrom has quit [Ping timeout: 258 seconds]
hashfunc41a has joined #commonlisp
ehammarstrom has joined #commonlisp
ehammarstrom has quit [Ping timeout: 258 seconds]
dBc has joined #commonlisp
ehammarstrom has joined #commonlisp
yottabyte has joined #commonlisp
ehammarstrom has quit [Ping timeout: 244 seconds]
ehammarstrom has joined #commonlisp
ehammarstrom has quit [Ping timeout: 240 seconds]
ehammarstrom has joined #commonlisp
hashfunc41a has quit [Remote host closed the connection]
pmwals09 has joined #commonlisp
pmwals09 has quit [Remote host closed the connection]
waleee has quit [Ping timeout: 255 seconds]
ehammarstrom has quit [Ping timeout: 276 seconds]
ehammarstrom has joined #commonlisp
ehammarstrom has quit [Ping timeout: 276 seconds]
ehammarstrom has joined #commonlisp
X-Scale has joined #commonlisp
ehammarstrom has quit [Ping timeout: 240 seconds]
<beach>
Good morning everyone!
yewscion has quit [Ping timeout: 250 seconds]
ehammarstrom has joined #commonlisp
ehammarstrom has quit [Ping timeout: 258 seconds]
hashfunc1df8 has joined #commonlisp
<weary>
Good morning beach!
igemnace has quit [Remote host closed the connection]
dBc has quit [Remote host closed the connection]
ehammarstrom has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
ehammarstrom has quit [Ping timeout: 258 seconds]
yw68 has joined #commonlisp
Bike has quit [Quit: sleep]
<beach>
contrapunctus: That's an interesting, but difficult, project. Consider at least using Eclector as yitzi suggested.
<beach>
contrapunctus: As scymtym said, you can also get source locations by using Eclector.
<hashfunc1df8>
hello, i'm not quite sure where to start on this. but i'm looking to completely expand a symbol into it's fullest possible form; no matter what the symbol is.
<beach>
What does it mean to "expand" a symbol?
<beach>
You can get its home package and its name. That's pretty much all there is.
<beach>
And you want the source code of that definition? As text? Or as S-expressions?
<hashfunc1df8>
either/or i think would work. i'm essentially trying to recursively expand a symbol into it's first-principles S-expression form, by recursively expanding all of the symbols in the form
<beach>
I don't think that makes much sense.
<hashfunc1df8>
really how so?
<beach>
What if the symbol names a generic function with methods spread all over the place? Then there is no single form that the symbol "expands" to.
<beach>
Plus, it is possible that the function named by the symbol is a closure, and then it doesn't have a representation as source code.
yottabyte has quit [Quit: Connection closed for inactivity]
<beach>
Maybe if you tell us what you want this for, it will be easier to understand.
<beach>
And what do you do for recursive functions? Do you keep "expanding"?
yw68 has quit [Quit: Client closed]
<hashfunc1df8>
beach: ok, so i'm attempting to gather all of the dependencies of a symbol by recursively "expanding" said symbol into its first-principles form (i'm envisioning that it would probably end up being just a bunch of special compiler-defined stuff (? not sure), but i would still keep track of all of the symbols that the symbol i'm targeting has "seen" (AKA dependency)
ehammarstrom has joined #commonlisp
<hashfunc1df8>
^ i would have to deal with that edge case. EQ would be an example of that
<beach>
You need the first step of a compiler for that. Because you need to expand macros and such.
<beach>
I am not sure there is a good definition of "first-principle form".
<semz>
I'm not sure "dependency of a symbol" is a well-defined concept to begin with. I believe SBCL keeps track of which functions call which other functions, which might be helpful for whatever you're trying to use this for
<beach>
Yeah, I think hashfunc1df8 is going to run into all kinds of problems.
<hashfunc1df8>
beach: i think the definition of "first-principle form" we could use would be "a form such that it cannot be expanded any further". such as the case with EQ
<hashfunc1df8>
semz: do you know where i could find that information?
<hashfunc1df8>
i mean, my intuition is telling me that this could almost trivially(?) be implemented fi i could just get my hands on a function that returned the source code of said symbol
<semz>
The SBCL manual probably, the package is SB-INTROSPECT
ehammarstrom has quit [Ping timeout: 244 seconds]
<semz>
The SLIME source code might also be helpful since it uses a fair few of these functions
<beach>
hashfunc1df8: You understand that you can't just replace a function call by inlining its source code in place of the call, right?
<hashfunc1df8>
beach: why not? you can certainly do that for some forms. why not all forms?
<hashfunc1df8>
semz: ok thanks i'll look into that
euandreh has joined #commonlisp
euandreh has quit [Ping timeout: 244 seconds]
aartaka has quit [Ping timeout: 255 seconds]
<beach>
hashfunc1df8: Differences in packages, scoping issues. Consider (let ((x ...)) (defun fun (y) (+ x y))). It makes no sense to replace (fun 234) by (+ x 234) because there is no x.
<beach>
hashfunc1df8: But since it is not clear how you want the final result to be presented, it is hard to understand how you could accomplish it.
ehammarstrom has joined #commonlisp
<beach>
Or, consider (defun fun (x y) (+ x y)), but it is in a package where + is not CL:+.
pranavats has left #commonlisp [Error from remote client]
ehammarstrom has quit [Ping timeout: 240 seconds]
aartaka has joined #commonlisp
aartaka has quit [Read error: Connection reset by peer]
aartaka has joined #commonlisp
aartaka has quit [Read error: Connection reset by peer]
aartaka has joined #commonlisp
ttree has quit [Ping timeout: 240 seconds]
gxt has quit [Ping timeout: 240 seconds]
gxt has joined #commonlisp
ehammarstrom has joined #commonlisp
<beach>
Oh, well, I guess we'll never know.
ehammarstrom has quit [Ping timeout: 276 seconds]
<hashfunc1df8>
i'm going to try to figure it out
hashfunc1df8 has quit [Remote host closed the connection]
Oladon has joined #commonlisp
ttree has joined #commonlisp
pranavats has joined #commonlisp
hashfunc1bb has joined #commonlisp
ehammarstrom has joined #commonlisp
<hashfunc1bb>
is there a way to get a full backtrace of a function call? like a way to show every function that was called during the execution of said function?
ehammarstrom has quit [Ping timeout: 244 seconds]
ttree has quit [Ping timeout: 244 seconds]
shka has joined #commonlisp
ehammarstrom has joined #commonlisp
pranavats has left #commonlisp [#commonlisp]
ehammarstrom has quit [Ping timeout: 258 seconds]
igemnace has joined #commonlisp
aartaka has quit [Ping timeout: 258 seconds]
weary has quit [Remote host closed the connection]
<Shinmera>
hashfunc1bb: not after the fact.
<Shinmera>
but if you're within the current execution context, you can use a library like Dissect to capture it.
ehammarstrom has joined #commonlisp
ehammarstrom has quit [Ping timeout: 255 seconds]
Oladon has quit [Quit: Leaving.]
<jdz_>
hashfunc1bb: With some implementations it is also possible to instruct TRACE to BREAK (when specific conditions are met).
jdz_ is now known as jdz
ehammarstrom has joined #commonlisp
<jdz>
hashfunc1bb: Also, with SBCL it is possible to trace all functions in a package, and also add a :wherein condition, which seems to be exactly what you want.
ehammarstrom has quit [Ping timeout: 240 seconds]
<hashfunc1bb>
Shinmera: jdz: thanks i really appreciate that. but i'm now starting to realize how disappointing this is for me. hopefully this will give me what i need
<jdz>
hashfunc1bb: What problem do you expect to solve by looking at all the functions that are being called?
<hashfunc1bb>
jdz: i just want to record and save that information, so that i can do some post-processing on it
igemnace has quit [Quit: WeeChat 3.5]
<jdz>
Pretty sure there are tools for that already (I'd start searching by "flamegraph").
<hashfunc1bb>
jdz: i appreciate the suggestion, but i'm not trying to profile or anything like that. i'm just trying to simply gather every function that is called in a function (or a macro), wherein i can then calculate the dependencies of said functions, wherein i can compare and contrast different functions based off of their dependencies
<hashfunc1bb>
\
<jdz>
hashfunc1bb: I'd say that's exactly what a profiler does.
<rotateq>
I mean the last returned values in the REPL are accessible through *, **, and *** until the next three are bound to those symbols.
<Shinmera>
you can't. the implementation may have closed it for you during gc, or it may not have. if you're on a unix system you can try to list the process' open fds and close the matching one with a syscall.
<Shinmera>
but there's nothing in standard CL that lets you do that.
<utis>
ok, thanks
<rotateq>
Ah right, praise the usefulness of GC then.
lisp123 has joined #commonlisp
<jackdaniel>
many implementations allow you to use finalizers, so before you lose the handler, you could register a finalizer that closes fd when gc'ed
<Shinmera>
Can't put a finalizer on the stream to close, though.
<edgar-rft>
this will give you a list of all symbols bound to open streams (including files): (let (result) (do-all-symbols (x result) (when (and (boundp x) (streamp (symbol-value x))) (push (cons x (symbol-value x)) result))) result)
vats has quit [Ping timeout: 272 seconds]
<Shinmera>
if it's bound, the reference isn't lost, is it
<Guest74>
i think they have more problems if they can't remember the symbol they used.
<edgar-rft>
Shinmera: true, but as a newbie it often happens that you mess with files and suddenly you loose track howto close them
<lisp123>
does anyone use much classes without slots?
<lisp123>
hmm maybe it doesnt make sense in lisp
<Shinmera>
Sure. Type markers and protocol classes are cool.
<yitzi>
Like a subclass that doesn't add any slots?
<lisp123>
yitzi: yes
<yitzi>
Absolutely. Just as Shinmera said. For dispatch, etc.
<lisp123>
I see!
<lisp123>
I started doing that and it felt quite good
<rotateq>
lisp123: it does ^^ as maybe "abstract" superclasses
<rotateq>
or for mixin classes
<White_Flame>
utis: it wasn't directly mentioned, but forcing a full GC might run internal finalizers on lost file handles. (sb-ext:gc :full t) in sbcl
<lisp123>
rotateq: true, i forgot about mixins
Bike has joined #commonlisp
igemnace has joined #commonlisp
<rotateq>
It's funny, had the question in mind some days ago again what could be used to prevent making instances of such superclasses.
<rotateq>
Maybe defining :around methods for make-instance and allocate-instance that just don't do call-next-method.
<rotateq>
Ten minutes left if someone wants to give me other ideas. :) But there's also a system :abstract-classes which I found via quilc.
<Shinmera>
Why bother is my question
<Shinmera>
If people want to do things you don't want them to do, they'll find a way.
<rotateq>
Shinmera: Don't worry, I don't really. :)
<rotateq>
Like with the other for "singleton" class or such stuff.
<rotateq>
Haha of course, much is possible.
pranavats has left #commonlisp [Error from remote client]
rotateq has quit [Remote host closed the connection]
<rotateq>
Apple would be not so pleasured about it, they don't want things that can be changed by the user at runtime.
<jackdaniel>
Guest74: I know as a fact that someone is making applications that are sold in apple store
<jackdaniel>
(with ecl embedded that is)
<rotateq>
Oh cool, kind of you scymtym. And sorry, was heading home at that time.
<rotateq>
or the version of CCL in the app store
<jackdaniel>
afaik they are running with the bytecodes compiler
<Guest74>
good to hear they're accepting them.
<jackdaniel>
so, ecl will work now in the browser and that will have a nice ring to it - ECL, the final frontier ,)
<scymtym>
rotateq: sure, no worries
<Guest74>
I'm confused by the whole apple thing. Can you allow say map mods to a roguelike? Share player stories for choose your own adventure?
<jackdaniel>
I don't know, it is probably a matter of a) legislation, b) walled garden company benefits
<jackdaniel>
(i.e they may change rules over night, or pretend that they don't see something what they forbid, or provide some inconsistent interpretations between projects)
<rotateq>
But from what I read in #clasp, drmeister_ now develops everything on the newer M1.
<jackdaniel>
there is a difference between osx and iphone operating system, the latter is more 'closed'
<jackdaniel>
i.e you may install linux on m1, but you cant install android on iphone
tok has quit [Ping timeout: 256 seconds]
<Bike>
rotateq: if you are referring to ARM more generally, clasp doesn't run on it. llvm exception support is not there yet, apparently. the M1 has an emulator so you can run x64 code on it.
treflip has joined #commonlisp
treflip has quit [Remote host closed the connection]
akoana has joined #commonlisp
treflip has joined #commonlisp
<rotateq>
Bike: Oh okay, sry. But I just see how much effort you all seem to do and admire that. Plus all the chemistry blowing-the-mind-away part.
<Bike>
it is pretty cool.
tyson2 has quit [Remote host closed the connection]
dlowe has joined #commonlisp
pslotko has quit [Quit: Leaving]
tok has joined #commonlisp
<Guest74>
So in my window manager you have workspaces where you can set what windows are accepted or rejected by that workspace and you can set specific layouts. I also provide the ability to provide a function that will construct a layout based on how many windows are in the workspace. I put this in mainly as an afterthought to deal with workspaces
<Guest74>
which gather lots of windows, but now I wonder if it should have more functionality, like accepting a list of windows and resolution to layout at. But if you were concerned with specific layouting wouldn't you just write the specific layouts? I'm not sure I like overlapping functionallity. Do people even layout their workspaces differently,
<Guest74>
if at all?
<White_Flame>
personally, I tend not to use any of that sort of thing, because it rarely survives certain updates, fresh installations, etc
treflip has quit [Quit: bye]
<Guest74>
are you a windows user?
tok has quit [Remote host closed the connection]
<Guest74>
though i guess not every non windows user has a portable home.
<Guest74>
meh, most people probably don't care about fine grained control over their work environment.
<Guest74>
If you have classes B and C both with superclass A, is there any way to have class D that inherits from B and C but keeps the slots they inherit from A separate?
<Bike>
Separate how?
<Bike>
Do you mean having one set of A's slots for each inheritance path?
<Guest74>
yes, though i guess since the accessor comes from A ...
<Bike>
it might be possible with a lot of mop hacking, but yeah, there would be a lot of details to figure out there.
<Bike>
why do you want to do this? maybe there's an easier way?
<Guest74>
I have managers that manage specific things and thought it'd be nice to combine two managers without one being a slot in the another.
<Guest74>
but of course the slot that holds the units they manage are from a shared super.
<Guest74>
which I guess is what I should change.
dlowe has quit [Ping timeout: 255 seconds]
molson has quit [Remote host closed the connection]
molson has joined #commonlisp
fitzsim has quit [Remote host closed the connection]
<White_Flame>
Guest74: no, I've been with linux on the desktop for a few decades now
waleee has joined #commonlisp
<White_Flame>
after a while, both on windows before, and on linux since, I've stopped customizing my environment simply because those customizations don't last or are too much effort to keep set up
<White_Flame>
especially being in a lab environment wiht shared computers tends to show the value in learning the shared defaults
<White_Flame>
at least when it comes to the OS, windowing system, etc
<White_Flame>
I would think that over time, most people pare down what customizations they perform to the most important ones and drop the rest, and the features of importance differ wildly between people
<Guest74>
well, as long as there are shared sensible defaults.
chimp_ has quit [Ping timeout: 244 seconds]
<Guest74>
That probably wont work, but if you're using a lisp wm that you interact with through the repl you're probably a different user base.
tyson2 has joined #commonlisp
Psybur has joined #commonlisp
roklein has quit [Quit: Leaving]
karrq has joined #commonlisp
<White_Flame>
specifically with emacs, people do have the advantage of dragging along their .emacs file and retaining their customizations
notzmv has joined #commonlisp
Cymew has joined #commonlisp
Oddity has joined #commonlisp
jmdaemon has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
Dynom has quit [Quit: WeeChat 3.5]
Cymew has quit [Quit: Konversation terminated!]
Alfr has quit [Quit: Leaving]
aartaka has quit [Ping timeout: 246 seconds]
aartaka has joined #commonlisp
fitzsim has joined #commonlisp
Brucio-61 has quit [Ping timeout: 250 seconds]
scymtym has quit [Ping timeout: 272 seconds]
Alfr has joined #commonlisp
karrq has quit [Quit: Konversation terminated!]
<Guest74>
White_Flame: that would be the goal. I hate having to recreate my environment manually, and I've lost too much work in the past because of crashes and meltdowns.
olnw has quit [Quit: olnw]
<Guest74>
I'm still so bitter over losing a bunch of X11 extensions that I've never really gone back to recreate what was lost.
Brucio-61 has joined #commonlisp
attila_lendvai has quit [Ping timeout: 260 seconds]
Guest74 has quit [Quit: Connection closed]
kpoeck has quit [Quit: kpoeck]
anticomputer has quit [Ping timeout: 240 seconds]
anticomputer has joined #commonlisp
ryanbw has quit [Quit: I'll be back.]
ryanbw has joined #commonlisp
irc_user has quit [Quit: Connection closed for inactivity]
ttree has joined #commonlisp
shka has quit [Ping timeout: 246 seconds]
xaltsc has quit [Read error: Connection reset by peer]
perrierjouet has quit [Ping timeout: 244 seconds]
lisp123 has joined #commonlisp
<mason>
Hrm, I could have sworn PCL was available as a PDF, but it seems just to be the web site / HTML.
lisp123 has quit [Ping timeout: 276 seconds]
perrierjouet has joined #commonlisp
tane has quit [Quit: Leaving]
orestarod has quit [Ping timeout: 255 seconds]
<sm2n>
there is an ebook
<sm2n>
it's just not freely available on the website
<mason>
I might just shell out for another hardcopy. I want my two older kids to each have their own, and as of today we only have two total.
<mason>
I'd secured copies of Land of Lisp for everyone but then I became convinced that I might want to go a different way.
<mason>
bbiab
<mfiano>
My memory is failing me: Is there a builtin function that can compare two proper lists with a custom test function?
<mfiano>
I guess like TREE-EQUAL, but comparing the elements rather than conses
<mason>
mfiano: Map?
<mfiano>
map returns a sequence or nil. I am looking for a comparator
<mfiano>
Sure, I could do it by mapping myself, but I'm wondering if I am misremembering that such a builtin exists
<mfiano>
Yeah looking for a builtin with a &key test like TREE-EQUAL
<mfiano>
I thought there might have been one, though I could be mistaken
<mason>
Being polluted by Perl, my first thought would be building a hash with counts of occurance.
<mason>
but maybe it'd depend on the context and what I wanted out of the exercise
<mason>
mfiano: If this is for your snapshot thing, what I do is sort of a hash collecting counts but done in shell.
<mfiano>
I want to compare equal-length lists for semi-identity
<mfiano>
A hash is overkill here
<mfiano>
semi- meaning, identical not by reference but a custom test
<mason>
I was going to ask. Thanks. :)
<akoana>
mismatch ? (just guessing)
<mfiano>
Yeah, that is actually what I was thinking of. Thanks.
weary has joined #commonlisp
random-nick has quit [Ping timeout: 258 seconds]
<weary>
hn threads on CL are tiring
<weary>
> why is everything CL plagued by such horrible design choices (hyperspec, Lisp-IDEs... all!) - why such ugly colors, ugly typography, bad contrasts, ugly logos, ugly diagrams, ugly supporting graphics?!
<nytpu>
of course hn would say that (in the case of the clhs), high-contrast black-and-white text with clearly indentifiable links would be a bad design decision, because they're all webshit devs that're hellbent on making their crap as unreadable and unnavigable as possible
<nytpu>
i guess the low-resolution images for the navigation links is a bit 90s but really, who cares. the spec is accessible which is more than one can say for most websites
<Alfr>
mfiano, EVERY
<Alfr>
mfiano, no key, but you're able to supply the predicate.