jackdaniel changed the topic of #commonlisp to: Common Lisp, the #1=(programmable . #1#) programming language | Wiki: <https://www.cliki.net> | IRC Logs: <https://irclog.tymoon.eu/libera/%23commonlisp> | Cookbook: <https://lispcookbook.github.io/cl-cookbook> | Pastebin: <https://plaster.tymoon.eu/>
<moon-child> Devon: common lisp also says this (and does allow for the existence of -0); I don't need to mention it. I only need to mention that -0 is mandatory, whereas cl says it is optional
<masinter> i thought there'd be a demand for CL implementation of 16-bit floats
<moon-child> I think 16-bit floats are mostly for ml, and no one is compiling cl to gpus because gpus are a hostile environment
edgar-rft has quit [Remote host closed the connection]
edgar-rft has joined #commonlisp
<moon-child> masinter: it seems to me that your 'cleanup proposals' pertain to an organisation that no longer exists, and is unlikely to again. So it's not clear to me that that's the way to go
<masinter> the CLHS features lilnks to cleanup text
<masinter> although there's an archive of related emails
<moon-child> my primary interest is getting user and implementor support and feedback. (I suspect that there is a bit of a bootstrapping problem: no users have done serious numerical work in cl because it does not support it.) There are a couple of compatibility libraries, but they are inadequate. (The same is true for concurrency, but Bike is already working on that.)
<pjb> masinter: clisp short-float are 24 bits: https://clisp.sourceforge.io/impnotes/num-concepts.html#float-lim
<ixelp> 12.2. Number Concepts
<masinter> the important part was the separation of costs and benefits for implementors and users
<masinter> and separating that from testimonials and pet projects
<moon-child> sure; some aspects of the organisation might be valuable. But I feel that's almost incidental
<masinter> McCarty thought the standards process suffered from 'log rolling': i'll let you add your features if you let me add mine
<masinter> and CL suffers a lot of that
<moon-child> pjb: I am thinking the size of short/long floats, if different from single/double, could be completely implementation-defined. You would be able to figure out the organisation with FLOAT-DIGITS and INTEGER-LENGTH of a negative
<masinter> if you add loop, why bother with the 7 other iterators?
<moon-child> (though I guess you should say mantissa and exponent both monotonically increase from short->single->double->long, so a longer float can always represent a shorter one. Shouldn't be hard to ensure
waleee has quit [Ping timeout: 265 seconds]
waleee has joined #commonlisp
pillton has joined #commonlisp
Devon has quit [Ping timeout: 272 seconds]
pillton has quit [Client Quit]
<masinter> javascript doesn't distinguish types at all
<masinter> between numbers
epolanski has joined #commonlisp
pillton has joined #commonlisp
random-nick has quit [Ping timeout: 260 seconds]
karlosz has quit [Ping timeout: 264 seconds]
masinter has quit [Remote host closed the connection]
waleee has quit [Ping timeout: 265 seconds]
waleee has joined #commonlisp
epony has quit [Quit: QUIT]
pve has quit [Quit: leaving]
speskk has quit [Ping timeout: 246 seconds]
epony has joined #commonlisp
azimut has quit [Ping timeout: 255 seconds]
sbenitezb has quit [Quit: Textual IRC Client: www.textualapp.com]
waleee has quit [Ping timeout: 252 seconds]
akoana has joined #commonlisp
azimut has joined #commonlisp
epolanski has quit [Quit: Connection closed for inactivity]
epony has quit [Ping timeout: 268 seconds]
tyson2 has quit [Remote host closed the connection]
epony has joined #commonlisp
igemnace has joined #commonlisp
akoana has quit [Quit: leaving]
azimut has quit [Ping timeout: 255 seconds]
aartaka has joined #commonlisp
chrcav has quit [Ping timeout: 272 seconds]
chrcav has joined #commonlisp
jolby has quit [Quit: Client closed]
Inline has quit [Ping timeout: 252 seconds]
mingus has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
shka has joined #commonlisp
mingus1 has joined #commonlisp
mingus has quit [Ping timeout: 252 seconds]
mingus1 is now known as mingus
mingus1 has joined #commonlisp
mingus has quit [Ping timeout: 252 seconds]
mingus1 is now known as mingus
pve has joined #commonlisp
notzmv has quit [Ping timeout: 246 seconds]
Krystof has quit [Ping timeout: 272 seconds]
Krystof has joined #commonlisp
rainthree has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 265 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
_cymew_ has joined #commonlisp
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 252 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 255 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 252 seconds]
_cymew_ has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 264 seconds]
Lord_of_Life has joined #commonlisp
pillton has quit [Remote host closed the connection]
notzmv has joined #commonlisp
azimut has joined #commonlisp
dzj has joined #commonlisp
<dzj> hello keepers of the wisdom and parethesis
<beach> Hello dzj (not that I feel part of that group).
<dzj> that is part of the wisdom
<beach> dzj: Are you new here? I don't recognize your nick.
<dzj> yes - like new new - literally following a tutorial and the author (who shall remain anonymous unless I make them massively cringe) suggested this irc chat. also I had a bit of a technology freak out 10 years ago and pretty much dropped it as stuff got too paranoid but I used to be djon3s or malaparte on oftc
<beach> I see. Welcome to #commonlisp.
<pjb> dzj: there's also #clschool for newbies, and others http://cliki.net/IRC http://cliki.net/Online+Tutorial etc.
<ixelp> CLiki: IRC
<beach> dzj: You may also want to join #clschool. This channel is not really for newbie questions, though they are tolerated to some degree. #clschool, on the other hand, is precisely for such questions.
<dzj> thanks that will be helpful, I can probably follow some discussion as I used lisp and remembered liking it the most as I could like generate code for "ugly" stuff etc & studied compsci but yeah I will try to be parsimonious with any input i have as an uneducated ordinary worldling not a noble disciple of mccarthy hehe
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
dzj_ has joined #commonlisp
dzj has quit [Quit: Client closed]
dzj_ is now known as dzj
dzj has quit [Client Quit]
dzj has joined #commonlisp
<shka> hi all
<beach> Hello shka.
<beach> Long time no see, I think, no?
<shka> I want to uiop:run-program that wants binary stream as input. Should I use flexi-streams for that?
<jackdaniel> can't you pass a binary stream there?
<shka> beach: glad to be of your attention, i mostly chit-chat on #lispcafe nowadays
<jackdaniel> btw uiop:run-program is terrible, it basically puts a front with the same api as the run program of the underlying implementation, but the front always copies data and is buggy
<shka> oooooh
<beach> shka: I see.
<shka> jackdaniel: i am glad that you mention that, avoiding coping data was my main motivation behind using run-program instead of launch-program.
<jackdaniel> (and it can't really fix bugs in the underlying implementation if there are any, because you know - it relies on it either way)
<shka> I will contemplate on alternative solution
<jackdaniel> the only "advantage" is that you may type arguments in the same string, like "ls -l", but is this really an advantage and not a bug? what if you have a program that is named "ls -l" ?
debian has joined #commonlisp
debian has quit [Client Quit]
<pjb> "ls\\ -l -l"
<pjb> or "'ls -l' -l"
<semz> Is there ever a situation where you would want to feed a bunch of buffers and streams into a processor (a decompressor in this case) but can't turn that into an input-stream? Other than the CL not supporting Gray streams.
karlosz has joined #commonlisp
<phoe> can't turn what into an input stream? what do you mean?
<phoe> you can concatenate several streams into a concatenated-stream, and you can turn buffers into in-memory streams for concatenation
<semz> Turn the various buffers and streams into one big input-stream which is then fed to the processor once, rather than feeding them into the processor one by one.
<phoe> that's what concatenated streams are for
<semz> Background is that I've been looking at similar APIs to what I'm doing and found a function that essentially just reads data from an input-stream, transforms it, and writes it into an output-stream. I can't figure out what's the point of making this a special function.
aartaka has quit [Ping timeout: 248 seconds]
aartaka has joined #commonlisp
random-nick has joined #commonlisp
jmdaemon has quit [Ping timeout: 246 seconds]
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 252 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
nij- has joined #commonlisp
speskk has joined #commonlisp
speskk has quit [Changing host]
speskk has joined #commonlisp
<nij-> Hello! I am turning an XML file into HTML. Parsing XML is fine, but I am still looking for a good tool for writing HTML. Have tries spinneret (https://github.com/ruricolist/spinneret), but it seems to ace in its syntax. What I need is something that turns structures into html stream though..
OlCe has quit [Ping timeout: 260 seconds]
epolanski has joined #commonlisp
tyson2 has joined #commonlisp
<Shinmera> One week until Kandria launches.
<Shinmera> (almost to the minute)
<Shinmera> nij-: Plump can both parse XML and output HTML.
<Shinmera> provided you map the tags appropriately.
jeosol has quit [Quit: Client closed]
xaltsc has quit [Ping timeout: 256 seconds]
<dbotton> Shinmera, May it be successful way beyond your dreams
<Shinmera> I fear my dreams are a bit too big :)
<jackdaniel> (boole boole-xor dreams 1)
<phoe> as long as (make-instance 'shinmeras-dreams) doesn't result in "Heap exhausted, game over.", I think you should be fine
<jackdaniel> solved
<jackdaniel> and don't tell me that it is an even dream, because it seems to be odd
<Shinmera> it is an imaginary dream :(
<Shinmera> no way for it to be real
<jackdaniel> (absf dream) rince repeat ;p
mingus has quit [Ping timeout: 246 seconds]
mingus has joined #commonlisp
varjagg has joined #commonlisp
aartaka has quit [Ping timeout: 252 seconds]
aartaka has joined #commonlisp
cage has joined #commonlisp
xaltsc has joined #commonlisp
karlosz has quit [Ping timeout: 272 seconds]
varjagg has quit [Ping timeout: 260 seconds]
<cage> Hi, I wonder if there is available on the internet the historical reason for the convention that suggests to use, for the functions that return a boolean value, the suffix '-p', have someone any URL to article explaining this convention?
<beach> cage: It might be very old. The "p" stands for "predicate", so it is probably a somewhat natural choice if all you have is uppercase alphabetic letters.
<cage> beach: thanks!
<beach> You could check whether Maclisp used that convention. I seem to recall it did.
<pjb> cage: you can guess the history of the thing: you have this https://www.youtube.com/watch?v=YnnGbcM-H8c to enter your lisp programs, and after writing the (CONS a d) -> c function, you want to implement the predicate function c -> boolean, but CONS is already taken, so naturally, CONSP comes next. Sounds good, let's do it!
<ixelp> 1964 IBM 029 Keypunch Card Punching Demonstration - YouTube
<pjb> cage: basically, it was a no-brainer!
<beach> cage: Maclisp had (has?) bigp, zerop, plusp, minusp, oddp, signp, greaterp, lessp. 1974
<pjb> Note that there was no CONS function in FLPL, since in Fortran, you didn't have a heap with dynamically allocated data. You'd just use XSTORDF(J,K), XSTORAF(J,K), XSTORTF(J,I), XSTOSPF(J,I) to store decrement, address, tag and sign/prefix bits in the word at address J. So equivalent to RPLACA RPLACD and some internal functions.
<pjb> So CONS and CONSP were invented with LISP.
<NotThatRPG_away> Charniak, Riesbeck and McDermott's 1980 "Artificial Intelligence Programming," has this convention in their "Lisp Style" section. It's old...
NotThatRPG_away is now known as NotThatRPG
<cage> i am reading the maclisp manual, i have found nothing about the convention yet, but sure is a interesting book to read, from an historical point of view :)
<cage> pjb: thank you!
<cage> NotThatRPG: seems thai is something really lost in the past :)
<NotThatRPG> cage: Probably just oral tradition -- no one thought it was worth writing down...
op2 has joined #commonlisp
<NotThatRPG> You might check to see if it's anywhere in the very early McCarthy stuff about lisp
<beach> cage: I am with pjb and NotThatRPG. I don't think anything is written down.
<NotThatRPG> I just wonder how far back we would find evidence of this being used in code.
waleee has joined #commonlisp
<NotThatRPG> Side question: do any of the CL testing libraries do anything to assess coverage (I have only the haziest idea of how this would even work...)?
<beach> NotThatRPG: You know that SBCL has tools for coverage, right?
<phoe> NotThatRPG: maybe you don't need framework support for that?
<phoe> compile the application code with coverage, start recording, run your tests, stop recording, save coverage report
<phoe> voila, you have a coverage report of which paths/lines in your codebase were triggered by your tests
<NotThatRPG> beach, phoe : No, I didn't know about the SBCL tool support. I will follow up on that. Thank you very much!
<beach> Pleasure.
<ixelp> SBCL 2.3.0 User Manual
rainthree has quit [Ping timeout: 260 seconds]
jolby has joined #commonlisp
varjagg has joined #commonlisp
nij- has quit [Ping timeout: 246 seconds]
varjagg has quit [Ping timeout: 252 seconds]
<pjb> NotThatRPG: we have the sources of LISP 1.5 dated 1962. I don't know if we have the source of the previous version of LISP.
<pjb> Well, it looks I was wrong, LISP 1.5 doesn't seem to have CONSP. Just ATOM (= NOT CONSP). https://github.com/informatimago/lisp-1-5/blob/master/lisp15.asm
<ixelp> lisp-1-5/lisp15.asm at master · informatimago/lisp-1-5 · GitHub
tyson2 has quit [Remote host closed the connection]
<pjb> The "predicates" in those 1962 sources are: (ATOM NUMBERP FLOATP FIXP ZEROP ONEP MINUSP LESSP GREATERP), all but ATOM have the P suffix. Some are 2-argument functions that are not predicate, strictly speaking (lessp, greaterp).
<pjb> CONSP came later.
<_death> does have LESSTP, NUMBRP, FLOATP, and such
<aeth> interesting how they had a ONEP
<aeth> I sometimes do (= 1 foo) instead of the more common in programming (= foo 1) when it's next to a (zerop foo) so the apparent order matches (even though it's (zerop foo) instead of (= 0 foo))
<aeth> it's a style in some other programming languages to have 1 == foo to guard against accidentally typing foo = 1 when you mean foo == 1, but of course CL doesn't have that problem because = is =, using SETF for assignment
<pjb> aeth: well, 1 was used for true. they'd write: (cond ((equal a b) 'same) (1 'diff))
<pjb> (in uppercase)
igemnace has quit [Remote host closed the connection]
jolby has quit [Quit: Client closed]
peterhil has joined #commonlisp
jolby has joined #commonlisp
psvensson has joined #commonlisp
<psvensson> Newbie q: How do I search for an asdf package? e.g. if I'd like to find which packages are availabile for a certain thing, or to see if a project I found on gihub can be loaded using quicklisp?
<Shinmera> ql:system-apropos does a very simple search.
<Shinmera> the quickdocs website does a little better of a search.
<beach> psvensson: When you search, you would want to use the term "system" rather than "package".
aartaka has quit [Ping timeout: 268 seconds]
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
tyson2 has joined #commonlisp
Oladon has joined #commonlisp
aartaka has joined #commonlisp
<psvensson> Shinmera: Thank you, Ill try that
<psvensson> beach: Argh, thanks. I thought I had it roight, but not so
aartaka has quit [Ping timeout: 248 seconds]
<Shinmera> To be fair it is confusing. A project is a collection of systems, a system may define packages. Quicklisp delivers a release of dists, which are collections of projects.
<psvensson> Thx, I'll probably get a grip eventually.
<Shinmera> (and a package is a set of symbols, and a symbol may name one or more definitions)
<psvensson> My problem is thsi; I've found a really nice github project that I'd like to make use, but it doesn't seem to be avilable through quiclisp.
<Shinmera> then clone it into local-projects.
<psvensson> It does have an .asd definition though, but it would be nice to not having anyone using my proejct to manually have to donwload it as well.
<psvensson> Is there a best practicie of how to arrange things in these cases?
<Shinmera> then you'll have to convince the author to publish it
<psvensson> OK, I'll reach out and so to, again thank you
<psvensson> *do so
attila_lendvai has joined #commonlisp
aartaka has joined #commonlisp
Devon has joined #commonlisp
jolby has quit [Quit: Client closed]
kagevf has quit [Ping timeout: 268 seconds]
igemnace has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
_cymew_ has joined #commonlisp
Devon has quit [Ping timeout: 260 seconds]
jolby has joined #commonlisp
Oladon has quit [Quit: Leaving.]
kagevf has joined #commonlisp
<neominimum> Hi. What libraries exist for consuming, transforming and producing Common Lisp source code? Applications would include automatic code formatters or obfuscators that retain semantics while changing the syntax or form.
aartaka has joined #commonlisp
aartaka has quit [Ping timeout: 272 seconds]
<random-nick> why do you ask?
aartaka has joined #commonlisp
<random-nick> I think most people here format code with SLIME, but that's not a library, it's written in emacs lisp and probably uses some emacs functionality too
<random-nick> or if you literally just want to read and print common lisp code, you might be able to use the standard reader, printer and pretty printer
<NotThatRPG> To do what's asked you would have to modify the standard reader so that you don't strip out comments.
<random-nick> I think SICL's implementations of those 3 standard things were spun off into portable libraries too
<random-nick> NotThatRPG: eclector seems to have functionality for that
tyson2 has quit [Ping timeout: 255 seconds]
<neominimum> random-nick: Essentially I just want to rename symbols in source code to strip it of readily identifiable information. But I think I'd be naive to try use a simple search and replace when there are things like evaluation and scoping rules/semantics to take into account.
<yitzi> I had a "proof of concept" branch for the pretty printer Inravina to read with Eclector and print with comments intact. I haven't merged it because it will require an extension to PPRINT-POP and I want to solidify how Inravina does client dispatching first.
<yitzi> NotThatRPG: ^
<pjb> neominimum: do you realize that most symbols are already removed by the compiler?
<pjb> neominimum: symbols that are keep should probably not be renamed, for a correct working of the program.
<pjb> neominimum: compile with (declaim (optimize (debug 0)))
<neominimum> pjb: I don't necessarily need it to executable, just for it to retain semantics. I'll be writting the transfomed code back to disk.
<NotThatRPG> Thanks, random-nick and yitzi
<random-nick> the existence of macros makes any such "smart" traversal difficult
<neominimum> I just want the code in a readable (human readable) bet stripped of excess information.
<neominimum> form* but*
<pjb> neominimum: (pprint (read)) will both a source file by removing comments, by resolving #+ #- #. and a few other reader macros at read-time, etc. So instead you will definitely want to use the libraries that are being implemented by beach for the sicl project. Ask in #sicl.
<pjb> s/both/botch/
paul0 has quit [Ping timeout: 260 seconds]
<neominimum> Thanks all, I have to run now but I'll check back in later. Have a good day
<random-nick> a simple search and replace might work though
<random-nick> unless you have macros which construct symbols and expect them to be bound when the expanded form executes
<random-nick> but such macros would be troublesome for any other approach, probably
varjagg has joined #commonlisp
nij- has joined #commonlisp
peterhil has quit [Remote host closed the connection]
jmdaemon has joined #commonlisp
peterhil has joined #commonlisp
peterhil has quit [Remote host closed the connection]
peterhil has joined #commonlisp
waleee has quit [Quit: WeeChat 3.7.1]
<pjb> neominimum: a quick-and-dirty "prototype" would be: https://termbin.com/d70x
morganw has joined #commonlisp
waleee has joined #commonlisp
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
mingus1 has joined #commonlisp
mingus has quit [Ping timeout: 256 seconds]
mingus1 is now known as mingus
cage has quit [Quit: rcirc on GNU Emacs 28.2]
masinter has joined #commonlisp
aartaka has quit [Ping timeout: 256 seconds]
aartaka has joined #commonlisp
_cymew_ has quit [Ping timeout: 252 seconds]
rogersm has quit [Quit: Leaving...]
keef has joined #commonlisp
tyson2 has joined #commonlisp
attila_lendvai has quit [Ping timeout: 264 seconds]
shka has quit [Ping timeout: 252 seconds]
speskk has quit [Ping timeout: 246 seconds]
varjagg has quit [Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)]
jeosol has joined #commonlisp
keef has quit [Ping timeout: 260 seconds]
Catie has quit [Ping timeout: 272 seconds]
Catie has joined #commonlisp
morganw has quit [Remote host closed the connection]
Catie has quit [Changing host]
Catie has joined #commonlisp
aartaka has quit [Ping timeout: 260 seconds]
aartaka has joined #commonlisp
rgherdt has joined #commonlisp
jeosol has quit [Quit: Client closed]
jolby has quit [Quit: Client closed]
<NotThatRPG> I'm realizing I don't really know how to use load-forms as I expected. It seems like I should be able to use them to save an object to a file. But *print-readably* doesn't seem to be enough to invoke MAKE-LOAD-FORM. So what's the way to do this? Write the value of MAKE-LOAD-FORM to a file? It seems like I ought to be able to do better than that...
<Bike> make-load-form is very distinct from the printer
<Bike> m-l-f is used when the source code contains a literal object
<Bike> so like (defun foo ... #.(make-instance ...))
rgherdt has quit [Remote host closed the connection]
<NotThatRPG> Bike: This gets back to my question a while ago (about whether or not I needed a table to build a M-L-F for a tree). Before I had defined M-L-F that way and had just printed the M-L-F value into a file. Very ugly, and the file is huge. I suppose what I should be doing is something like taking the M-L-F value and compiling it (say by wrapping it in a file.
<NotThatRPG> Or ... perhaps this just doesn't do what I want and what I really wanted was a persistence library
epolanski has quit [Quit: Connection closed for inactivity]
<Bike> NotThatRPG: if you are compiling some code that refers to literals you should use make-load-form. if you just want to record objects for later it's probably better to use a persistence library. i like conspack myself
<NotThatRPG> Bike: Do these libraries typically traverse the full object recursively? E.g., my quite large search tree object?
<Bike> If they're good, yeah. conspack does it
<NotThatRPG> I was testing out CL-STORE based on Edi Weisz's book recommendation.