freenode/#lisp - IRC Chatlog
Search
19:25:39
flip214
beach: don't you think there could be classes outside of CLOS? not in ANSI CL, granted, but if someone implements them using CONS cells only (or structures, or arrays, etc.)
19:40:38
aeth
flip214: I think what beach is saying is that people say "a CLOS class" when they mean "a class defined by defclass", which is more accurately "a standard class". And that distinction is needed because there can be condition classes (or are they just conditions?) with define-condition and structure classes with defstruct.
19:41:41
aeth
flip214: And imo there are some classes that you yourself can write that aren't part of CLOS if you (ab)use macros enough, but that's kind of besides the point. They're not CL classes, you're basically embedding a new language.
19:42:02
aeth
(And beach would probably say that if you're avoiding CLOS there in the implementation, you're probably making things too hard.)
19:42:46
aeth
(Although depending on what you mean by "a part of CLOS", then everything in the language is a part of CLOS, so that's another possible reply.)
20:16:28
pjb
aeth: defclass can also define non-standard-classes, when :metaclass is not standard-class.
20:36:34
aeth
This makes me think of the tangential question: Is there any class system that can't be expressed by CLOS? I don't think so...
20:38:08
Shinmera
Anyway, beach's point is that every class is a class as part of CLOS, and as such saying "CLOS class" is redundant and ambiguous.
20:39:55
aeth
pjb: I am being intentionally general to allow for more room, but there still might be a counterexample. I mean, turing complete, yes, but sometimes you literally have to write an interpreter to run that equivalent program.
20:44:30
aeth
If you allow for macros, I think you can emulate static object systems (C++/Java/etc.) just by doing things at macro expansion time instead of run time. I think that would just require boxing everything and using type declarations with https://github.com/Bike/introspect-environment and would be very Java-ish, but being Java-ish there would be the point.
20:47:45
aeth
pjb: Then to do C++/Java, you'd just have to fake the above at runtime, doing two passes, I guess?
0:12:08
White_Flame
built-in lisp capabilities for hot edits are at the full expression level, not the subexpression (like an inner loop body) level
0:12:39
White_Flame
so if teh loop called a function, you could hot-redefine the function every iteration if you wanted, without anything special
0:13:01
no-defun-allowed
Trivial. Lots of things are redefinable by default in Lisp, and SLIME makes it easier than walking.
0:14:19
White_Flame
see also let-over-lambda for retaining state in a closure while execution does other stuff
0:14:44
White_Flame
DrDuck: why would any langauge reload source from files constantly? that's slow. No designer woudl add that by default, especially in an industrial language like CL
0:17:20
aeth
DrDuck: if you want to see live coding taken to an extreme in Common Lisp, check out CEPL. https://github.com/cbaggers/cepl
0:17:25
aeth
DrDuck: or in video form: https://www.youtube.com/playlist?list=PL2VAYZE_4wRITJBv6saaKouj4sWSG1FcS
0:17:44
White_Flame
one wonders what would happen if you save with a syntax error with that python tool
0:24:16
aeth
You sometimes have to do extra work to prevent the program from continuing to execute stale code, especially if you do something fancy like write shaders for OpenGL with your library.
0:25:19
aeth
The default, though, is basically that if you recompile a file while the image is running with SLIME (or something similar) then the updated definitions will be used. Recompiling a top-level form will mostly work, but sometimes compiler optimizations get in the way of that because compilers are allowed to optimize a file heavily and SBCL sometimes does
2:52:58
minion
The URL https://gitlab.common-lisp.net/users/sign_in?secret=ebc7a0f4 will be valid until 03:00 UTC.