freenode/#lisp - IRC Chatlog
Search
14:04:41
jackdaniel
I suppose you can call fill-rectangle on a picture and pass that picture as a design for the triangle-fan
16:05:36
decent-username
I've asked a question a few hours ago. Unfortunatley I didn't have proper internet until now. Did anyone answer it?
16:13:44
decent-username
I have another question: How could I override the name of a classes :initarg and :accessor for a slot that was inherited?
16:13:48
decent-username
Inside #'make-sprite-sheet-sprite I'd like to initialize the `resource-keyword' slot from the `sprite' class.
16:13:54
decent-username
I actually don't want a new `sprite-sheet' slot for `sprite-sheet-sprite', just different names for the accessor and initarg of `resource-keyword'
16:14:40
Xach
decent-username: you do have to recap the slot name and add an :accessor and :initarg argument.
16:19:06
decent-username
I'll plan on writing lisp throughout this semester, so I don't get rusty. And because I'm a lazy bum, Im staying from 8AM to 8PM at the university.
16:21:04
Bike
the superclass accessor will still work on instances of the subclass, just so you know
16:23:26
Bike
you said "different names" instead of just a new name, so i figured i'd be expliict about it
16:24:14
decent-username
Maybe I've had too little sleep. My brain is spewing out random sentences with bad syntax.
16:24:53
decent-username
Bike: That's why I like the Lisp community. People are very accurate with their word choice. (in contrast to me)
16:26:45
decent-username
probably. I still don't really know how to use the words "condition" and "error" properly.
16:31:16
beach
decent-username: "throw" in this context is not good, because there is a function THROW that does something completely different.
16:32:32
beach
There is still some sloppiness in the vocabulary used here. There is no such thing as "a lambda" for instance. There is "a lambda expression" and there is an "anonymous function" (the result of evaluating the lambda expression).
16:33:20
beach
And many people say "a CLOS class" but that term is meaningless since all classes are part of CLOS. What they often mean is "a standard class".
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