libera/#commonlisp - IRC Chatlog
Search
8:23:09
mgl
Reading https://sabracrolleton.github.io/testing-framework, I was amazed by the number of testing frameworks, but https://xkcd.com/927/ struck, and now I'm announcing the final word on testing called Try that tries to do almost everything these libraries do while remaining conceptually simple. The design is closest to Stefil's. If you are
8:23:10
mgl
interested, read the tutorial here: https://github.com/melisgl/try#x-28TRY-3A-40TRY-2FTUTORIAL-20MGL-PAX-3ASECTION-29
9:05:50
jackdaniel
the only thing multitude of test frameworks doesn't do is not rewriting the same purpose library over and over again
9:06:48
jackdaniel
if anyone thinks about writing the next one, there are a few name spots open: 3am, 4am, 6am :)
9:15:04
mgl
Deservedly great reception! Have a look though, it may float your boat, especially if you like your tests to be functions.
9:37:59
lisp123
I'm thinking of memoizing function calls for multiple functions. Which is better, to have a giant hash table where I look up the function & its arguments or have individual hash tables for each function?
10:33:49
phoe
minion: memo for lisp123: individual hash tables for functions will be faster and individual caches can be easily removed this way
10:38:26
moon-child
hmm, it occurs to me in a context where you make a more broad and sophisticated cache, you might actually not want to do that. Rather, you would have a more unified architecture where you devote a certain amount of space to cache, and evict based on frequency and expense
10:40:04
phoe
if you want something more advanced then you need techniques for controlling cache size, eviction, etc.. so a simple hash table won't do anymore
14:00:57
rotateq
I don't know how it's about you, but I often realized with myself how much the urge of perfection can be a curse. :/
14:13:39
Equill
rotateq: I feel it. Took a *lot* of work to get myself to internalise that "good enough" really can be.
14:16:18
Equill
It probably helped when I looked at the quest for perfection as an asymptote, and realised that it's often a question of when the delta is small enough. It wasn't much of a step from there to think in more practical terms, and realise that the smart approach is to accept "good enough" as when the delta is small enough that your *customers* don't notice or care about the difference.
14:17:42
Equill
I concluded that perfection should always be what you *aim* for, but it's not only OK to not reach it, but it should be a pleasant surprise when you actually do.
14:18:32
rotateq
But I often feel like I can't ever understand many things *really* deeply and that frustrates me too.
14:20:24
Equill
Again, it's a case of accepting that there just isn't enough time to understand everything as deeply as you feel you should. Then it's a question of how deep it's worth diving down any given rabbit-hole.
14:20:44
Equill
Then again, it's well enough for me to speak: I *still* have more hobbies than I have time for them :)
14:21:16
rotateq
Yes of course, as I can't prove everything in the kind of maths I do myself, or doing every physics experiment and and and ...
14:23:31
rotateq
I was wondering if the new James Webb telescope has again some CL running on it like the scheduling system on Hubble. But as I read they completely used "standardized" things by IBM.
14:24:56
rotateq
So the question still remains how they debug and reprogram parts that fail as it runs, like in the talk about "debugging from 60 million miles away" having a CL REPL on board to connect to.
14:32:13
pjb
rotateq: usually, it's just done by having two partitions. When there's a bug, they upload a new system image (or more probably in these cases, a patch to build a new system image) in the other partition, and reboot.
14:33:17
rotateq
I have no favorite Android system. ^^ But ok, could update my Lineage OS, my camera doesn't initialize since a few days now.
14:33:53
pjb
rotateq: of course, if the problem is just in a program, they may just upgrade the specific executable. They usually have persistent memory organized as a MS-DOS file system.
14:34:40
rotateq
Ah okay. Came across again at HAL/S, we talked about it some time ago and you told me it has the capability of reading 2D-equations. ^^
14:35:15
rotateq
As I heard even on FPGAs it's possible that they change parts of themselves as they run.
15:56:15
rotateq
It's so exhausting, one mentions "and with CLOS you missed really something more in getting the idea of OOP" and instantly it's called 'scary' and such. I shouldn't care.
15:59:14
rotateq
Then I looked and just thought: so when using :allocation :class for a slot it seems to be it, even with following a sane update protocol for all made instances.
16:37:13
phoe
Online Lisp Meeting #13 starting in 20 minutes: https://www.twitch.tv/TwitchPlaysCommonLisp
16:48:07
etimmons
exciting! I'm hoping to put together one in a couple months. (and would probably request this time as well)
17:44:40
minion
lisp123, memo from phoe: individual hash tables for functions will be faster and individual caches can be easily removed this way
17:46:50
lisp123
My latest theory is that the expressivity and freedom offered by Lisp (by providing building blocks that can be combined vs. a restrictive dogmatic language like others) makes it difficult for many to program in
17:47:31
lisp123
And that's one of the reasons why other languages became more popular. They are "easier" to get something done - whereas there seems to a curse in lisp where many keep striving for perfection
17:48:10
lisp123
(well at least for me - i feel some times I'm spinning wheels and not progressing fast enough)
17:48:56
cage
dbotton: found them! Seems a very nice project CLOG, thanks for writing it and showing to us :)
17:49:23
phoe
The Common Lisp Omnificent GUI - Online Lisp Meeting #13, 11.01.2022 - https://youtu.be/SeYK7Id3cd8 + https://youtu.be/pkQ-WlzQudw
17:51:13
cage
dbotton: i wonder if was possible to attach clog lambda function (so to say) to canvas event (like mouse clicking)
17:52:53
sveit_
hi. I am confused about inheritance of metaclasses, and I was wondering if someone could explain what is going on. More specifically, the following code gives an error in SBCL:
17:53:09
sveit_
(defclass a () () (:metaclass closer-mop:funcallable-standard-class)) (defclass b (a) ()) (make-instance 'b)
17:53:50
sveit_
the definition of class b seems clear, what is the "right" way to fix this and make b inherit the metaclass as well? and why does it not do so "automatically"?
17:55:10
phoe
I was curious if there is some way to automatically inject the proper metaclass based on stuff like in https://github.com/phoe-trash/value-semantics-utils/blob/main/src/always-bound-class.lisp#L20-L33
17:55:41
Equill
lisp123win: you may have a point there. I've seen senior Java developers look *scared* at the mention of Lisp. I suspect the fear of freedom (and the responsibility of choice that comes with it) is a factor. But I've also come to see functional and procedural/imperative programming as transform-oriented and register-oriented respectively, and the underlying mindsets are just wildly different.
17:55:54
sveit_
i see. if you don't mind, can you explain (1) the rationale behind such a decision and (2) can I signal to some part of MOP that when inheriting from 'a one should inherit the metaclass?
17:56:47
Equill
Some people are just much more comfortable with the idea of rephrasing the problem to suit the machine, than phrasing it in terms of what you do to the data on its way through.
17:57:56
dbotton
cage yes and no, the canvas is just a bitmap so there are limits to what you can do out of the box.
17:58:05
yitzi
sveit_: I don't think that the metaclass has to be the same, just compatible according to validate-superclass.
17:58:27
phoe
;; Equill: whereas lisp people are comfortable with doing both, always at the same time, while also adding tons of abstractions along the way
17:58:52
jackdaniel
yitzi: but the expectation here is that sveit_ want's to make an instance of funcallable-standard-class, not standard-class