freenode/#lisp - IRC Chatlog
Search
20:35:12
jmercouris
_death: can you name some things it grew which in your opinion were not necessary?
20:37:00
jmercouris
_death: given your power of hindsight, which features are, in your opinion, a bad idea
20:37:42
copec
It seems to have been the first defsystem tool that solved most of the major problems and was usable
20:38:26
jackdaniel
since many people do uneducated decisions mere veolcity gives you a big bonus for popularity
20:38:37
jmercouris
I'm just wondering if some other tool could usurp ASDF by perhaps providing compatibility but with a new codebase
20:39:15
phoe
or rather, without something that will abstract away some of the filesystem and OS details
20:39:19
_death
jmercouris: personally I'm avoiding complex use of asdf, so I don't have much trouble with it.. when it annoys me, it's small things
20:39:26
|3b|
_death: sbcl package-local-nicknames was based on my spec, but i'd say sbcl's docs/implementation is the current 'official' definition
20:40:15
_death
jmercouris: but I remember reading the old asdf and feeling that I understand most of it.. nowadays I wouldn't bother reading asdf to understand it, just the parts I need to understand
20:40:28
jmercouris
my biggest complaint with ASDF is the M-. we had talked about, and the very cryptic error messages when things don't load
20:41:47
jmercouris
I'm not incapable of humor, I just don't see how that would be funny in any circumstance
20:42:10
jmercouris
still, I've never laughed at reading the draft of an essay 'lol! this document in progress!'
20:42:13
mfiano
The biggest issue with a CL build system is in a modern internet-connected age, is no missing feature of ASDF - it's packages loaded into a flat, global namespace. RENAME-PACKAGE hacks can only get you so far. If we ever moved beyond Quicklisp to support features such as multiple versioned transitive dependencies, maybe even some files LOAD'ed at runtime, we have some issues that can only really be
20:42:15
mfiano
solved by another convention like PLN that needs to be widely adopted by implementors.
20:42:19
_death
jmercouris: yes, dbus uses package-inferred-systems... I think that's a good feature of asdf for many kinds of projects
20:43:17
jmercouris
_death: why do you think so? I was under the exact opposite feeling, I would be interested in your rationale
20:43:18
jackdaniel
mfiano: beach wrote a specification for global environments which may be different for different code
20:43:47
jackdaniel
I find it very appealing from the perspective of creating multi-versioned systems in a single image
20:45:25
mfiano
jmercouris: Not every implementation ever will. Some are abandoned, or aren't even conformant yet (GCL)
20:45:55
|3b|
and lower memory usage/executable size still matters for some things, also possibly supports some more platforms than the others
20:47:21
phoe
see your favorite modern Intel CPU for an example of hardware that runs minix by default
20:49:13
jmercouris
every CL has some unique feature and reason for existing, in my opinion, the ones for CLISP are not there
20:49:42
|3b|
jmercouris: regarding humor of that pln spec, if nothing else, the ratio of "how should this work" to "it should work this way" is amusingly high now that i look at it again :p
20:50:25
mfiano
CLISP supports arbitrary floating point reprentations. You can calculate pi to the Nth digit if you want just by printing PI with some arbitrary precision. It also has very nice memory profiling support for #'room, and a bunch of other niceties.
20:51:03
phoe
what the fuck, seriously, today I learn that software needs to be justified in order to exist
20:51:04
Xach
jmercouris: things exist because people who want to work on it continue to work on it, and effort and enthusiasm go a long way (and are not easily conjured up or transferred around)
20:51:25
_death
jmercouris: basically each file defines its own package, so you don't feel like you may be stepping on some other module's toes when defining names.. with principled use of :use and :import-from you know exactly the symbols available.. you export just the names you want to export, and it's easy to import them in another file.. factoring a project to use package-inferred-systems sometimes leads you to discover issues of modularity, e.g.,
20:51:26
_death
you didn't expect this piece of code to use that functionality from the other piece of code, but it happened because it's too convenient when they define symbols in the same package.. also each file becomes a system you can load, and loads just the stuff it needs.. also, some modules may only use :cl and not import any other stuff.. those are now self-contained modules, where in ordinary use they would start with in-package and the
20:51:34
jackdaniel
I find it silly to think that worthwile endavours are directed by reasons for existing -- I wouldn't use CL if I weren't taking the fun factor into account :)
20:51:36
copec
clisp compiles on every architecture, it is in every netbsd pkgsrc tree, for instance
20:52:40
mfiano
Above all, it is a nice addition to CI for testing conformance for a particular project (or finding implementation bugs to report)
20:53:18
jmercouris
_death: I guess it could be a very effective way of debugging your own code :-D converting to them and back! I do find it however very unnatural, maybe if I give it a try for 3 months or something I would change my mind though, I have half a mind to try to do so after what you wrote
20:53:46
jmercouris
phoe: firstly, I think that is a bit too aggressive, secondly I did not say software needs justification to exist, I simply said that CLISP has no justification to exist
20:53:46
phoe
jackdaniel: I kinda agree, a surprising lot of free software exists because someone wanted to write it for no particular reason
20:54:42
phoe
jackdaniel: this, plus software that scratched someone's itch and then grew, plus some happy accidents, plus someone's personal frustrations
20:55:23
_death
jmercouris: it also makes it easier to thing about interfaces explicitly, since you have to decide what to export and from where
20:56:13
jmercouris
phoe: so what, why does that make you so angry? it is my belief that software *should* have a purpose for existing, even if that purpose is the amusement of the authors. When we are talking about CLISP as an implementation though, if it has no greater purpose beyond the author's amusement, why should the community care if it implements PLN or not?
20:56:47
jackdaniel
jmercouris: the one who is agitated is you. clisp has multiple unique featues, one is that it is the most portable
20:57:00
jmercouris
_death: CL has made me very lax with that regard, I used to consider that a lot more back in high school when programming in basic :-D
20:57:01
jackdaniel
second is that it is the only one I'm aware of which implements JIT (not ahead of time compilation)
20:57:49
_death
I think clisp is a cool implementation.. it has a good manual, quite portable, the code is not hard to understand.. was the first implementation I used
20:57:52
jackdaniel
note that you've brought the topic that "you don't understand why people do use clisp"
20:58:33
phoe
it's trivial to neglect the upsides of any piece of software and, from that point on, proceed about how it has no right to exist
20:59:36
phoe
I could do a low kick and start rambling about how nextbrowser is pointless purely for the purpose of demonstrating what I just said, but that's as pointless as rambling about clisp
21:00:10
jmercouris
phoe: well, saying you could do a low kick and then not doing it is effectively the same thing :-D
3:17:49
joinr
Is it expected behavior that using varargs within a recursive labels form will cause an infinite loop?
3:18:03
joinr
(defun f (&rest args) (LABELS ((aux (X &REST XS) (PROGN (IF (not (null xs)) (PROGN (PPRINT X) (aux (FIRST XS) (rest XS))))))) (apply #'aux args)))
3:19:24
joinr
expectation is that the null condition will be met eventually and computation stops. Instead, you get Nil printing out
3:21:21
joinr
this is a small reproducible case for a larger metprogramming deal. I thought labels would work fine (and it does) seemingly as long as you don't go into &rest arg territory and try to apply.
3:23:32
no-defun-allowed
I'm not sure if you intend for this to happen, but (f 0) will print nothing.
3:24:28
joinr
the non-terminating phenomena was what got me. totally forgot I'd have to apply on recurse.
3:34:24
lottaquestions
Hi all, is there a way of listing all the global variables in a running instance in slime?
3:38:21
Bike
technically there could also be variables named by inaccessible symbols, but that doesn't happen much
3:39:41
no-defun-allowed
(do-symbols (s) (when (and (boundp s) (eql (symbol-package s) package)) (print s))) will print all the symbols that are bound in the current package, which isn't all of them, but might be what you want.
6:24:07
beach
jackdaniel: Thanks for the link to Graham's article. He seems to put his finger on something important.
7:07:25
boeg
second day with sick kid at home, keeping me up all night. Think I'm gonna see if I can optimize on my advent of code adventure from yesterday