https://irclog.tymoon.eu/libera/%23commonlisp?to=1681213754 libera/#commonlisp - IRC Chatlog Search Monday, 10th of April 2023, 23:49:14 UTC 0:25:20 pfdietz Is Duane Rettig still alive, and if so still at Franz? Just curious. 0:37:20 yitzi There are commits from Rettig from at least 2016 in the Franz github repo. Some from last year also, although those are coauthored. 0:37:49 pfdietz If I found the right person, he's 69 now, so maybe he retired. 0:38:33 yitzi Lots of other examples, but here is one https:// github.com/franzinc/loop/commits/master 1:42:06 masinter i'm looking for a good loop macro implementation 1:42:49 masinter old lisp hackers never die, they just fade away 1:45:44 edwlan[m] beach has one, iirc 1:46:23 edwlan[m] http://metamodular.com/SICL/loop.pdf 1:47:29 masinter i invented loop 1:47:49 masinter for lisp/360 at stanford in 1970 1:51:29 bjorkintosh Wow. 1:52:09 masinter i got teitelman to add it to interlisp 1:54:31 bjorkintosh what's your favorite lisp implementation, masinter? 1:56:41 masinter Interlisp of course 1:57:12 masinter it might not be good but it's fun 1:57:55 masinter https://www.computerhistory.org/collections/catalog/ 102721861 2:03:49 masinter i never liked the MAP functions, you had to add all of this (FUNCTION (LAMBDA (X) ... around the meat of what you were doing, which wa an iteration. And if the iteration used variables outside the scope of the function, you had to prove that you didn't have to make a thunk. I'd get rid of MAPxxxx and tell people just use loop. 2:05:40 bjorkintosh map was created by the mathematicians. 2:05:54 bjorkintosh (I think) 2:07:18 masinter i started out trying to be a mathematician but i got waylaid by my draft board 2:07:40 edwlan[m] The way I use the map functions, I don't end up writing many lambdas 2:08:13 masinter i'm not sure why there's FUNCTION at all 2:11:26 masinter it's either #'symbol or #'(lambda ...) 2:17:51 bjorkintosh I bet it's because lisp is so malleable, that instead of attracting obedient users who accepted things as they are, it attracted followers who all made attempts to mold it in their own image. 2:25:11 mariari MAPCAR is a nice function. and MAPCAN, is basically the monadic bind function. it has a weird mutation that makes it subotpimal in some scenarios but overall I'd much rather use it than LOOP 2:25:31 mariari MAPCAR is quite limited, where as a LOOP can do a lot, thus I don't have to read MAPCAR, if I see it, I have a rough idea on the control flow 2:26:37 masinter i tell people that my greatest contribution to the Common Lisp standard was inventing the form you had to fill out to get a change to the language passed in the cleanup committee 2:27:31 masinter where you had to list the problem you were solving without making reference to your solution 2:27:50 masinter and for every solution you had to list the costs & benefits to users and implementations 2:27:53 mariari that is a nice contribution to the standard 2:28:49 masinter well, it was hard to get moon and fahlman and me to agree to anything, but i got people to agree that the form was filled out correctly 2:29:53 masinter and it avoided the situation where the problem was serious but the proposed solution sucked 2:30:13 masinter s/avoided/mitigated 2:35:17 mariari how were features normally debated at the x3j13 committee? 2:35:42 masinter i have mail archives 2:35:47 masinter someone would propose an issue 2:35:56 masinter we'd discuss it by mail 2:40:38 masinter when we met, infrequently we'd vote 2:40:54 masinter there's a mail archive 2:41:15 masinter i put it all up on github https://github.com/ masinter/cl-parcftp 2:41:46 mariari it is giving me a 404 2:42:02 mariari https://github.com/masinter/parcftp-cl 2:42:33 masinter there's another mail archive at CDDDDDDDDR.net or something like that 2:42:36 mariari thanks for preserving this, I'll give it a read it some time 2:42:55 mariari http://ml.cddddr.org/ I believe this URL? 2:47:20 masinter not sure it's a superset 2:49:15 masinter what I learned from working in the IETF and W3C was that agreement wasn't enough, you had to have compatibility. Although WHATWG took it too far (IMHO) 3:14:40 copec I like that both LOOP and MAP are in CL and that you can use the one that makes sense for the situation. 3:18:49 masinter CL got rid of some of the uglier function names 3:19:49 masinter in the middle of writing a FOR you need a WHEN ... that you hadn't thought of, you'd have to go back and change the MAP function 3:20:10 beach masinter: Perhaps you can answer the question we had a few days ago. The grammar for LOOP does not allow for termination clauses anywhere, but there is a passage in the text that says it is allowed. Which one is right? 3:20:38 masinter i never worked on the iteration committee 3:21:12 masinter http://ml.cddddr.org/cl-iteration/ 3:21:12 beach Oh, I thought when you said "i invented loop", that's what you meant. Sorry. 3:21:44 masinter before loop 3:21:59 beach Thanks for the link. 3:22:02 masinter loop was added because interlisp had for / do / while iterators 3:22:25 masinter and interlisp had it because i showed teitelman how cool it was in lisp/360 3:22:35 beach I see. 3:23:02 masinter i kept the fanfold paper but i donated all of my lisp stuff to the computer history museum because ... lisp was dead i thought 3:23:39 jeosol masinter: thanks for the historical context and preserving those document. 3:23:47 jeosol good morning all! 3:24:43 jeosol masinter: from your last statement, I guess lisp isn't dead then, or it resurrected? 3:25:00 edwlan[m] lisp is undead 3:25:11 masinter like the night king in Game of Throwns, raising the undead 3:25:35 masinter all of these old lisps coming to life again! https:/ /online.interlisp.org ! 3:25:58 masinter but winter is coming 3:26:28 jeosol winter is coming for lisp, or ai? 3:26:40 masinter ai is the winter 3:27:16 masinter i mean AI today 3:28:41 masinter http://ml.cddddr.org/cl-iteration/msg00011.html 3:30:07 masinter https://larrymasinter.net/85-ai-tutorial.pdf#page=4 4:06:13 jeosol masinter: thanks for sharing the last link. Are you following any of recent results from deep-learning paradigms? What happened to the gofai techniques of the early 80s(?) 6:02:40 beach clhs butlast 6:02:41 specbot http://www.lispworks.com/reference/HyperSpec/Body/ f_butlas.htm 6:03:04 beach Check out the example (butlast lst 5) => (1 2 3 4) 6:04:18 beach Oh, sorry. It is correct! *blush* 9:14:35 Demosthenex omg, so i'm having to write perl for the first time in years, so painful. 9:17:33 Demosthenex functionwithparen( sorthasnoparen @{$ting-> {$$whoopie}}[9] ); and they say ()'s are too hard or complex 9:36:32 beach Demosthenex: Who is forcing you? 10:38:06 nij_ ** NICK nij- 10:39:37 nij_ ** NICK nij- 10:42:28 nij_ ** NICK nij- 10:47:09 nij- After a structure is defined, we can make a structure instance easily by, say, #S(person :name "John" :email "john@gmail.com"). I wonder why such functionality isn't default to classes as well. Is it because classes are too powerful and general? 10:48:15 beach You can do it with a simple reader macro. We do that for abstract syntax trees in SICL. 10:48:35 beach So you can say [person :name "John" :email "john@gmail.com"] 10:50:16 beach Just define [ to be a reader macro that does (apply # 'make-instance (read-delimited-list #\] stream t)) or something like that. 10:50:38 jackdaniel nij-: structure objects are simpler - i.e all their slots are allocated on a list or on a vector 10:50:56 jackdaniel standard object may have class-allocated slots (for example) 10:52:00 jackdaniel (mind that #s... denotes a literal) 10:53:44 Josh_2 :trumpet: hi 10:54:17 Josh_2 Does anyone else have an issue with very latest lisp-unit2? I clone the repo but when I load my system lisp-unit2:*test-db* is nil so the loading fails 10:55:32 Josh_2 If I set the value of *test-db* to an instance of a test-database everything loads fine (after the fact). How can I set this value just before my system loads? 10:56:15 nij- beach, thanks.. but my question is why we can't do that for all classes like structures, and if we can why isn't it a default. 10:56:51 nij- jackdaniel What is a list-allocated slot? 10:57:08 Josh_2 Annoyingly I have to wait for my system to fail, set the value and then load my system :( 10:57:13 beach You can do it for all classes. I can't answer the question as to why there is no such reader macro by default. 10:57:27 jackdaniel nij-: when the object has slots, they are put in the memory 10:58:35 beach nij-: Lots of people want lots of thing to be predefined in Common Lisp. But Common Lisp makes it easy to define things yourself, and the language would be absolutely huge (way more than now) if those desires of everyone were met. 10:58:36 jackdaniel in the case of structures you may decided how they are stored with the :type argument 10:58:59 jackdaniel it may be a list, a vector or an implementation-specific structure 10:59:23 beach nij-: Perhaps a better question is why this technique for creating structure instances was not removed in the standard. 10:59:57 nij- beach I understand your frustration. I don't mean to whine for the lack of such functionality. I'm just curious if classes are too general for such default functionality. And if so, how? 11:00:17 beach nij-: No, I just showed you how to do it. 11:00:59 splittist nij- Yes. Because there are many ways and times one might want to initialize the slot of a class instance. 11:01:53 nij- beach's answer seems to conflict to splittist's and jackdaniel's.. but yeah beach's solution seems to take care of it.. 11:02:05 Josh_2 Idk if I timed out before my message was ssent but I sorted my problem. Tard moment :sunglasses: 11:03:21 splittist nij-: not a conflict - different answers to different parts of the question. 11:05:19 nij- Thanks 11:06:17 pfdietz One should be leery of putting functionality into the reader, since it can immediately lead to incompatibilities between different software components. 11:19:02 beach One would use a specific readtable for the code. 11:46:14 Demosthenex beach: work. perl is preinstalled with basic core mods. can't install anything else Tuesday, 11th of April 2023, 11:49:14 UTC