freenode/#lisp - IRC Chatlog
Search
22:03:34
sjl_
ACTION looks ruefully at "minutes lost wondering why method isn't getting called before noticing one-character typo in name" tally, sighs
22:06:13
sjl_
(defgeneric send-message (database value)) (defmethod send-mesage ((database foo) value) ...) does not warn in recent SBCL versions.
22:09:16
verisimilitude
Ada's system for preventing just this manner of thing comes to mind; you can use the overriding keyword to cause a compilation error if the subprogram doesn't actually override something or not overriding to do the opposite.
22:10:28
verisimilitude
I suppose I'd rather have a superfluous warning when purposefully doing this, since it would also cover this case.
22:25:00
pjb
The other solution is 1- respect the Lysoff substitution principle, 2- to use next-method-p and call-next-method when appropriate, 3- to use method combinations when appropriate, 4- not care whether there's other methods or not, since methods can be added or removed dynamically.
22:32:30
aeth
Failing early can be good. e.g. It would be nice to see if a CLEANUP method exists before the program runs instead of at the very end.
22:33:07
aeth
Well, not really before the program runs. Right at the start before anything is really started is often good enough.
22:40:46
pjb
aeth: already, with CL you have multiple dispatch, and multiple inheritance. So it doesn't make much sense to expect to "override" or not a method.
22:42:27
pjb
asarch: for example, if I use CL and CLIM, there's: Using #<Package "COMMON-LISP"> in #<Package "FOO"> would cause name conflicts with symbols inherited by that package: interactive-stream-p clim-lisp-patch:interactive-stream-p
22:51:07
aeth
pjb: What I mean is that some APIs are simply "if it implements #'bar it's okay" but if #'bar is only called at the end, or at least hours in, it could take you quite some time to realize that something's missing!
22:51:10
pjb
asarch: when I define a package, and the *application-frame* variable, there's no error.
22:51:51
pjb
aeth: Granted, API should be defined studily. This is why I have some doubt about using generic functions in APIs…
23:00:43
aeth
pjb: I'm not sure there's a better solution than calling a #'cleanup method at the end of an unwind protect if it's a framework (with inversion of control: i.e. it is in charge of the control flow) that wraps everything in an unwind-protect.
23:00:47
aeth
And that cleanup could have just about anything, including freeing foreign data if CFFI-wrapped libraries are used, other calls to cleanup, resetting globals, etc.
23:01:37
aeth
The main drawback, of course, is that that method is essentially by definition called exactly once at the very end, so if it's missing it will take some time to find out when ideally you want to verify that it's there before init.
23:42:24
pjb
aeth: you can check that things have happened in finalize methods for your objects. This is implementation dependent, but for checks it's good enough (just develop with an implementation that have them).
23:54:01
pjb
When you have a problem you should extract a minimum example demonstrating this problem, but the key word here is "minimal": ie. it must not be smaller. If we cannot load the code to debug it, how can we help?
23:54:54
pjb
And what about this *application-frame* variable? Where did you define it? Why is it not in your paste?
0:18:42
asarch
If I try adding (run-frame-top-level (make-application-frame 'color-editor)) at the end of the code, I get.
0:22:24
asarch
That code is from: https://common-lisp.net/project/mcclim/static/documents/guided-tour.pdf
0:40:13
katco
(i'm sorry for this weird sentence): i'm working on some packaging for guix, and i'm trying to package a package-inferred-system system. with sbcl, guix uses the `compile-bundle-op` to produce fasl's, but this seems to not be working. that is, many fasl files are produced, but not the single `foo--system.fasl` i would expect. is there a way i can get package-inferred-systems to produce this single fasl using the `compile-bundle-op` op?
0:57:40
Xach
well, i guess i can't find the code that caused me problems with ptys on macos, so i guess i should stop complaining