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/> | News: ELS'22 this Monday (2022-03-21), see https://european-lisp-symposium.org
igemnace has quit [Remote host closed the connection]
random-nick has quit [Ping timeout: 246 seconds]
<nytpu> is it possible to use (or is there a library for) set operators---adjoin, union, intersection, etc.---on vectors instead of lists?
<lisp123> nytpu: it would be a good exercise for you to write one
<nytpu> more convenience than anything because i could just write my own, but figured i'd check
<lisp123> won't take long
<lisp123> what you could do is define these operators as generic functions
<lisp123> and have them work on both vectors and lists
<nytpu> yeah, i figured. and good idea making them generic functions
<lisp123> http://www.mathcs.duq.edu/simon/Gcl/gcl_toc.html what document is this?
rotateq has quit [Ping timeout: 258 seconds]
<Josh_2> Is GNU Common Lisp maintained?
<lisp123> Its very well written
<lisp123> Suprised that thats the GCL reference
dBc has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
<White_Flame> that is the clhs, is it not?
<White_Flame> or at least, the spec
lisp123 has joined #commonlisp
lisp123 has quit [Remote host closed the connection]
Lord_of_Life has quit [Ping timeout: 255 seconds]
Lord_of_Life has joined #commonlisp
igemnace has joined #commonlisp
<weary> it's the spec, yes, converted to html from the draft sources
<weary> compare http://www.mathcs.duq.edu/simon/Gcl/gcl_498.html to Objects 7-9 (around page 461 depending on which copy you're using) in the spec
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 255 seconds]
waleee has quit [Ping timeout: 250 seconds]
aartaka has quit [Ping timeout: 260 seconds]
<mfiano> If I have a (string-starts-with-p string prefix-string) function, what would be an efficient way to remove paths from a recursive list of strings similar to filesystem paths, given a list of exclusion prefixes?
<mfiano> My naive solution is algorithmically slow: (remove-if (lambda (x) (some (lambda (y) (string-starts-with-p x y)) exclude-list)) full-list)
<mfiano> (like (some-func '("a" "a/b" "a/b/c" "b" "c") '("a/b")) ; => '("a" "b" "c")
Spawns_Carpeting has quit [Ping timeout: 246 seconds]
Spawns_Carpeting has joined #commonlisp
<mfiano> s/(like/like:/
notzmv has quit [Ping timeout: 260 seconds]
<mfiano> If they're sorted it should be possible to do in O(n+m) time, and I believe they are guaranteed to be sorted, but I'm not sure how yet.
orestarod has quit [Ping timeout: 255 seconds]
aartaka has joined #commonlisp
akoana has quit [Quit: leaving]
Bike has joined #commonlisp
<Bike> mfiano: organize it into a trie?
<mfiano> Yeah probably the best solution, but I decided it's not worth it given how small N is going to be.
Guest74 has joined #commonlisp
terrorjack has quit [Quit: The Lounge - https://thelounge.chat]
terrorjack has joined #commonlisp
<Nilby> unix itself is inefficient in path traversal and usualy does it the slow way. the most efficent thing is convert it to a file descriptors and keep it that way, e.g. openat
<beach> Good morning everyone!
<Josh_2> Mornin'
<Josh_2> How do I redirect a user with Ningle?
<smlckz> writing cl after a long time.. http://sprunge.us/c7dWiB
<smlckz> can you review this?
<beach> smlckz: Don't use IF with just a `then' or just an `else' part. Use WHEN or UNLESS instead.
<smlckz> okay
<Josh_2> Perhaps signal a condition instead of returning 'invalid
<beach> smlckz: Use slime-indentation to indent LOOP clauses.
<beach> smlckz: There is no particular reason to have a newline after DO when the following form will fit on the same line.
<beach> smlckz: One LOOP clause is almost certainly incorrectly indented. Yet another reason to use slime-indentation. It's the DO clause conditioned by a WHEN.
<Guest74> is there/has there been a page description language written in lisp?
<beach> smlckz: WHEN (NOT ...) is better expressed as UNLESS ...
<smlckz> how do i use slime-indentation?
<beach> (slime-setup '(... slime-indentation ...)) in your .emacs
<beach> And, yes, do signal errors when appropriate, rather than returning strange symbols.
masinter has joined #commonlisp
azimut has quit [Ping timeout: 240 seconds]
tyson2 has quit [Remote host closed the connection]
masinter has quit [Quit: ~ Trillian - www.trillian.im ~]
masinter has joined #commonlisp
notzmv has joined #commonlisp
prokhor_ has joined #commonlisp
prokhor__ has quit [Ping timeout: 240 seconds]
<beach> Busy right now. I'll look later.
<smlckz> okay
lisp123 has joined #commonlisp
cosimone has quit [Read error: Connection reset by peer]
lisp123 has quit [Ping timeout: 246 seconds]
cosimone has joined #commonlisp
cosimone has quit [Remote host closed the connection]
<smlckz> how do i get the tab character in a string?
Bike has quit [Quit: sleep]
cosimone has joined #commonlisp
pjb has quit [Remote host closed the connection]
<beach> There is nothing special you need to do. Just make it part of the string.
<beach> smlckz: In the last loop, I and J are always going to be the same.
<beach> And again, there is no particular reason to insert a newline after DO.
<beach> It just wastes valuable vertical space.
pranavats has left #commonlisp [Error from remote client]
<beach> Oh, same for the first loop in INVERT-MATRIX I and J are always equal.
<mfiano> I see no determinant check
<smlckz> beach: is there a way to loop over i and j with different values in the same LOOP?
<beach> You need a nested loop for that.
<mfiano> I am surprised nobody mentioned the incorrect algorithm and just noted style changes.
<beach> I can not focus on the algorithm when I am so distracted by the noise.
yewscion has quit [Quit: Leaving]
yewscion has joined #commonlisp
<mfiano> I agree. I would also recommend writing more modular functions instead of a large blob of undocumented code. Easier to test that way, too.
<beach> Absolutely.
<mfiano> Matrix inversion is tricky to get correct. For one, not all matrices are invertible. Also a fast path may exist if you do a small amount of testing upfront, which reduces the computation time considerably.
<mfiano> and it's not really possible to know if it's invertible without testing, so you would either want to signal condition for the caller to handle, or return multiple return values. An un-invertible matrix should not stop further computations in some domains.
pranavats has joined #commonlisp
lisp123 has joined #commonlisp
lisp123 has quit [Read error: Connection reset by peer]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 260 seconds]
anticomputer has quit [Remote host closed the connection]
frgo has joined #commonlisp
anticomputer has joined #commonlisp
frgo has quit [Ping timeout: 260 seconds]
shka has joined #commonlisp
rotateq has joined #commonlisp
bilegeek has quit [Ping timeout: 255 seconds]
bilegeek has joined #commonlisp
lisp123 has joined #commonlisp
<lisp123> White_Flame: I see, thanks
<lisp123> masinter: thanks, I got the algorithm in the end from what seems to be the standards: http://www.mathcs.duq.edu/simon/Gcl/gcl_1238.html#SEC1238
Alfr has quit [Quit: Leaving]
treflip has joined #commonlisp
<lisp123> Actually..this doesn't seem to look like the draft standards: ttp://www.mathcs.duq.edu/simon/Gcl/gcl_1238.html#SEC1238
<lisp123> ignoreme it is
<rotateq> Hm I know the part in clhs with the specified reader algorithm, now good to see such for a printer algorithm.
<rotateq> Like I was advised using set-pprint-dispatch for letting #\Space print as ' ', rather specifying a print-object method, as this would produce false prints sometimes.
<rotateq> Or no, the other way around of course, that it prints as "#\Space" when on it's own as a character object.
<rotateq> * object of type character
<seok-> does andrew wolven hang around here ?
yewscion has quit [Read error: Connection reset by peer]
Alfr has joined #commonlisp
<iceman[m]> who is that?
<seok-> person who wrote vktk
pjb has joined #commonlisp
pjb has left #commonlisp [ERC (IRC client for Emacs 27.2)]
treflip has quit [Read error: Connection reset by peer]
pjb has joined #commonlisp
treflip has joined #commonlisp
treflip has quit [Quit: Quit]
rogersm has quit [Quit: Leaving...]
pve has joined #commonlisp
yewscion has joined #commonlisp
causal has quit [Quit: WeeChat 3.5]
lisp123 has quit [Quit: Leaving...]
bilegeek has quit [Quit: Leaving]
jmdaemon has quit [Ping timeout: 272 seconds]
Dynom has joined #commonlisp
igemnace has quit [Remote host closed the connection]
pranavats has left #commonlisp [Error from remote client]
rainthree has joined #commonlisp
random-nick has joined #commonlisp
xaltsc has joined #commonlisp
treflip has joined #commonlisp
shka has quit [Quit: Konversation terminated!]
lisp123 has joined #commonlisp
hubvu_ has quit [Quit: Connection closed for inactivity]
lisp123 has quit [Remote host closed the connection]
attila_lendvai has joined #commonlisp
Oddity has quit [Ping timeout: 244 seconds]
tok has joined #commonlisp
dre has joined #commonlisp
pve has quit [Ping timeout: 256 seconds]
attila_lendvai has quit [Ping timeout: 246 seconds]
McParen has joined #commonlisp
Dynom has quit [Quit: WeeChat 3.5]
lisp123 has joined #commonlisp
tyson2 has joined #commonlisp
tok has quit [Remote host closed the connection]
aartaka has quit [Ping timeout: 255 seconds]
Spawns_Carpeting has quit [Ping timeout: 244 seconds]
pranavats has joined #commonlisp
Spawns_Carpeting has joined #commonlisp
aartaka has joined #commonlisp
dre has quit [Ping timeout: 246 seconds]
Bike has joined #commonlisp
lisp123 has quit [Quit: Leaving...]
vats has joined #commonlisp
orestarod has joined #commonlisp
wildlander has joined #commonlisp
wildlander has quit [Read error: Connection reset by peer]
McParen has left #commonlisp [#commonlisp]
vassenn has joined #commonlisp
vats has quit [Ping timeout: 255 seconds]
aartaka has quit [Ping timeout: 246 seconds]
dBc has quit [Quit: leaving]
azimut has joined #commonlisp
vassenn has quit [Quit: Good bye!]
treflip has quit [Quit: i sleep]
kpoeck has joined #commonlisp
cosimone has quit [Remote host closed the connection]
ec has joined #commonlisp
roklein has joined #commonlisp
tane has joined #commonlisp
tane has quit [Changing host]
tane has joined #commonlisp
cosimone has joined #commonlisp
rotateq has quit [Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)]
szos has joined #commonlisp
<mfiano> Can I retrieve the evaluated format string from a SIMPLE-ERROR condition in a handler?
weary has quit [Remote host closed the connection]
cage has joined #commonlisp
<mfiano> I think I have to rebuild the string with #'simple-condition-format-control and #'simple-condition-format-arguments ?
<mfiano> Relatedly, is there a way to retrieve the evaluated report of any ERROR condition?
<Bike> you should be able to just print the condition. with :escape nil and such
<mfiano> In this case I'm actually trying to pass the report to a logging function that expects a format control string.
<Bike> if you're talking about any error condition, format doesn't have to be involved. the :report can be some arbitrary function
* mfiano noticed when application dies with --disable-debugger on SBCL, there are no logs, and nothing on stdout/stderr
<mfiano> So want to hook into my logging system
<pjb> mfiano: not a simple-error, but often implementations use subclasses with more slots.
<pjb> mfiano: (well, sometimes you can cheat, non-conforming, and use the simple-condition-format-arguments.
<mfiano> I don't want to rely on any implementation
<pjb> mfiano: err, sorry, I read you wanted something more general than the formatted string. You can indeed use (format out "~?" (simple-condition-format-control k) (simple-condition-format-arguments k))
<pjb> or just (princ k)
<pjb> Just printing the condition should re-format the message.
waleee has joined #commonlisp
sander has quit [Quit: So long! :)]
rotateq has joined #commonlisp
<mfiano> Thanks I sorted it out.
<mfiano> Is trivial-backtrace the recommended library to use for a backtrace portability library? Gary King hasn't really been using Lisp in some time, and I wonder if this was forked/re-implemented differently.
Bike has quit [Quit: Connection closed]
Bike has joined #commonlisp
<jackdaniel> it is good for basic stuff (like printing the backtrace)
<mfiano> What alternatives exist?
<jackdaniel> afair dissect (shinmera library) has some more sophisticated functionality
<mfiano> Thanks
<Shinmera> yes
<contrapunctus> mfiano: https://shinmera.github.io/dissect
<jackdaniel> other than that you have stuff packed with sldb
sander has joined #commonlisp
<mfiano> dissect is pulled in as part of verbose, because the damn warnings have been bugging me for ages
<Shinmera> Verbose will already make use of Dissect if you pass it a condition object.
<jackdaniel> and of course native interfaces which give you best integration
<mfiano> Shinmera: Perhaps you can fix this? It drives me mad :) https://gist.github.com/mfiano/f0808a64e9428cb50c95a1cfa45230a6
<Shinmera> I could. But it does not drive me mad so I can't be bothered to. I would accept a patch to do it if someone else is so inclined.
<mfiano> It has existed for as long as I've been using verbose (many years)
<Shinmera> Yes. It has existed since inception.
<Shinmera> I don't care.
kpoeck has quit [Quit: Client closed]
<mfiano> Fair enough I guess.
<Shinmera> It would be a trivial fix, but I guess nobody else has cared, either.
<mfiano> I'll try my luck later maybe
<Shinmera> Nothing against you specifically, but it has happened several times where people throw me issue tickets for their personal pet peeves or whatever, and expect me to spend my time on their behalf. It is slightly annoying to me that people can be bothered to complain at me, but not enough to just fix the darn code.
<mfiano> Seems it is due to implementation backends overriding the default functions. I can just add some #- feature checks to the default
<mfiano> THat is quite easy
<Shinmera> Either that or use something like setf fdefinition.
<Shinmera> instead of defun
<mfiano> In which?
<Shinmera> in the backends
<mfiano> Ah ok
* jackdaniel goes on a hunt for pet peeves to complain to Shinmera about them
* Shinmera hisses
<mfiano> Hmm, I don't think I ever setf a macro-function in a long time. I'm not quite sure how to do it.
<mfiano> eek, there are no tests, and the travis manifest just calls quickload?
<rotateq> Wouldn't it be like (setf (macro-function 'foo) (macro-function 'bar))? Okay, maybe wrapping in an appropriate eval-when, but I would like to read how the right way is.
<mfiano> That would work, but that introduces a new low-level backend macro function
<mfiano> Which isn't wrong per say
<mfiano> Can you even setf a global macro-function's symbol to that of a local macrolet around the setf?
<hefner> silly question, TRACE output seems to ignore *print-length* and it's flooding my slime-repl printing a huge list that's passed to a function, is there a way to make it respect *print-length* or otherwise be able to trace such functions without wrecking my repl?
<mfiano> First attempt says no. Must have to do something with &environment if it is possible
<rotateq> mfiano: I remember that you can't, but I may be wrong as so often. Or that you can't use setf with symbol-function nor macro-function inside a lexical scope.
<mfiano> That makes sense
<rotateq> And I forgot how it can be tested if a symbol is bound by a let inside such scope.
<mfiano> Not portably
<mfiano> lexical bindings may not even exist in compiled code.
<rotateq> Sad, but totally ok.
kpoeck has joined #commonlisp
<rotateq> mfiano: Or should I say LOCALLY ok? :)
<mfiano> Shinmera: PR sent
aartaka has joined #commonlisp
<hefner> nevermind, figured it out - maybe not in a good way, but remembered I could M-. the code. sb-debug::trace-start-breakpoint-fn wraps the printing in with-standard-io-syntax. Funny, because the return value printing doesn't do that.
<Shinmera> mfiano: thanks
<mfiano> No problem, thank you as well.
<Shinmera> One peeve less in the world :)
<mfiano> :)
<mfiano> I restart my image a lot, and search the compiler output with asdf verbose mode on for warnings and notes, and I have to step over these constantly :)
tyson2 has quit [Remote host closed the connection]
<mfiano> So yeah, one less annoyance :)
<mfiano> I did my good deed for the year it seems (I need to contribute to other projects more often, even if it is something stupidly simple like this)
<Shinmera> Same
<Shinmera> Also my own projects :(
<mfiano> I wonder where Xach has been, and why we haven't had a dist release since March.
<Josh_2> My lisp program keeps exiting saying "Killed"
<Josh_2> I trace error and get nothing :(
<Josh_2> No thrown conditions, just "Killed"
<mfiano> Then it must be due to a foreign library or your OS's kernel killing it due to some signal or OOM
causal has joined #commonlisp
<Guest74> mfiano: I've been wondering the same. Was planning on asking him some vecto stuff for weeks now.
hide-difference has joined #commonlisp
treflip has joined #commonlisp
tyson2 has joined #commonlisp
tyson2` has joined #commonlisp
tyson2 has quit [Ping timeout: 258 seconds]
kpoeck has quit [Quit: Client closed]
<Josh_2> mfiano: how can I check?
<mfiano> Must be time to break out DTrace if you're on FreeBSD, or one of the inferior alternatives if not.
tyson2` has quit [Remote host closed the connection]
<Josh_2> "Killed by sigkill" :sob:
<Josh_2> Perhaps it is the OS sending the sigkill
<Josh_2> This stops when I restart my VPS. It crashes either when parsing json from an API call or when making the API call. I am using Jonathan but at safety 3
<hefner> could it be killed by OOM?
<Josh_2> OOM?
<hefner> the out of memory killer. should get logged somewhere if so. just thinking that VPS often have low memory limits.
<Josh_2> I see
<Josh_2> I will check, thanks :)
tane has quit [Ping timeout: 246 seconds]
<Josh_2> Okay yes
<Josh_2> I think it is OOM thanks hefner!
<Josh_2> My VPS has 2gb of ram :sob:
<hefner> Might be able to avoid by lowering the --dynamic-space-size on SBCL (or similar for other CLs). I'm imagining maybe it's burning through the VPS ram before garbage collecting, and you could force it to GC earlier. I don't recall what the logic or defaults for any of that is. Mostly a wild guess.
<Josh_2> Yes that might work
jmdaemon has joined #commonlisp
<White_Flame> there's also a bytes-consed-between-gcs setting
<Josh_2> Doesn't help that my VPS has no swap space
<Josh_2> Can I set the dynamic size when building a system?
<Josh_2> Yes I guess I can
<Josh_2> What is SBCL's default size?
<masinter> how many bytes is a CONS in SBCL?
rainthree has quit [Ping timeout: 246 seconds]
<Josh_2> Okay I restricted the dynamic-space to 450mb (it wouldn't build with less) and then tried running again and now the heap is exhausting after requesting 37762064 :sob:
<mfiano> Hmm, I've never experienced this before. I must be misremembering something about catch/throw...
<mfiano> No matter what tag I catch, the body of the CATCH form is executed.
<mfiano> Even if I don't throw anything
<mfiano> What could cause this?
<yitzi> Its the reverse the body of catch is run to completion unless there is a throw.
<mfiano> Let me explain what I'm trying to do
<mfiano> I have a handler that listens for C-c. I want that handler to emit some kind of signal to my main loop, so it can exit cleanly at the end of an iteration.
<mfiano> Can you tell me how I might do that with catch/throw?
parjanya has quit [Ping timeout: 258 seconds]
<White_Flame> interrupt-thread?
<White_Flame> where the lambda you give it does the throw
<mfiano> With catch/throw
<mfiano> I don't want to rely on threads
<mfiano> Or anything non-ANSI
perrierjouet has quit [Quit: WeeChat 3.5]
perrierjouet has joined #commonlisp
<White_Flame> hmm, I think you are misremembering how CATCH works. It executes the body, but if anything THROWs within the body, the entire CATCH form returns that value. Else it'll return the PROGN-ish last value
<mfiano> I am, looking at some old code of mine. I am not sure how to do it though
<White_Flame> so it running the bodyshouldn't be surprising?
<yitzi> Throwing LOOP-DIE exits the loop, throwing LOOP-CONTINUE aborts and continues the loop.
<mfiano> Do I need LOOP-CONTINUE?
Oddity has joined #commonlisp
<mfiano> This is an infinite loop. It should always continue unless told to die with a dynamic tag thrown
<yitzi> No, just an example. There is much more detailed examples in my common-lisp-jupyter.
<yitzi> LOOP-CONTINUE is really "An interrupt the current computation" kind of thing.
<mfiano> But when it dies, it should run multiple side-effecting forms, not just return a value
<White_Flame> mfiano: that is an infinite loop, that defaults to running the do-some-stuff continually unless you THROW
<mfiano> (I need to print a log message, then run a portable lisp image quit function)
<White_Flame> that sounds better to use handler-case then
<yitzi> You'll have to test the return of catch if you want to determine the reason for the throw.
<yitzi> or use unwind-protect, maybe.
<mfiano> The handler that emits the throw is attached to a condition that listens for when the user wants to abort
<Josh_2> I have a bunch of websites which are basically just static running in their own separate images, no point in doing this tbf. Can combine them to save ram
<White_Flame> mfiano: catch/throw is not like exceptions in other languages. It is a nonlocal value return
<White_Flame> I really think you want condition handling instead
<mfiano> I know.
<Josh_2> Foolish of me to have done things this way, I should do it the lisp way and have one giant monolithic system that allows me to define new websites :sunglasses:
<mfiano> I have condition handling. I wouldn't be able to throw if I didn't.
<Josh_2> (def-website ..) :sunglasses:
<White_Flame> throw does not have anything to do with conditions, though?
<mfiano> (handler-case (with-user-abort (main-loop)) (user-aborted (throw ...)))
<yitzi> mfiano: I find catch/throw more useful in the context of threading. Where one thread interrupts the other and executes a throw in that thread.
<mfiano> More specifically, I am using this: https://github.com/compufox/with-user-abort
<mfiano> Except instead of quitting immediately, I want to defer quitting until a clean time to do so
<yitzi> How do you define "clean time?"
cosimone has quit [Ping timeout: 255 seconds]
<mfiano> My main loop goes something like (loop (do-stuff) (sleep n)) where clean would be between do-stuff and sleep.
<yitzi> So you want do-stuff to complete before the processing the ctrl-c?
<mfiano> Yes, exactly, but during a sleep is also a clean time, which might be harder.
tyson2 has joined #commonlisp
<yitzi> Sounds like you need some kind of condition variable.
<mfiano> My loop runs every 10 minutes, where do-stuff could take any amount of time, depending on external factors, and sleep is constant. I would like the user abort to be at most the remainder time from when invoked to when do-stuff finishes.
<mfiano> s/run/iterates/
<mfiano> Well technically sleep is not constant, since it tracks the delta time of do-stuff and adjusts to make it 10 minutes
<White_Flame> we use a flag for that
<White_Flame> and have simple tools to wait for the flag to be set, or to poll it
citizenandrew has joined #commonlisp
<mfiano> How vague.
<White_Flame> your error condition would unwind some of the broken stuff, set the flag, and continue on with the current work until it hits that outer iteration?
<White_Flame> a global (and in our case, threadsafe) value that anybody can set, and are many readers on it
<mfiano> OK I'll play with that idea, thanks
<White_Flame> doing a blocking wait on shutdown stuff is easier with the threading utilities, though
<White_Flame> oh wait, if you're not threaded then you would never do that anyway, nevermind
<citizenandrew> masinter: 16 bytes (it has an immediate tag / is unboxed) ... (sb-ext:primitive-object-size (cons 1 2)) or (time (dotimes (x 1000000) (setf *blarg* (cons 1 2)))) -> 16 MB (only because fixnums 1 and 2 are unboxed too)
<citizenandrew> (on x86/64 of course)
<masinter> citizenandrew: what does fixnum boxing have to do with size of CONS?
<White_Flame> because TIME reports all allocations, not just that of the cons
<White_Flame> *cons cell
<masinter> but if you had (cons 1.5 2.5) it would rebox the floats?
<White_Flame> on 64-bit, it would likely be immediate/tagged similarly to fixnums
<White_Flame> if they were default single-float
<White_Flame> for double-float, then TIME would report the allocation of a million conses plus two million boxed double-floats
<citizenandrew> masinter: you are right, using constant double floats would not actually increase the allocation in that dotimes
<White_Flame> (hmm, or not. it would just refer to the ones created by the reader)
<White_Flame> yep
<citizenandrew> masinter: sorry, I mean you are right to ask if it would rebox the floats --- it would not. The floats would presumably be created by the readers and just pointed at by the cons.
<White_Flame> (cons (coerce x 'double-float) nil) allocates 32MB total,due to that extra boxing
<White_Flame> and only 16MB for single-float coersion
<citizenandrew> Anyhow, double floats being boxed entities makes my life hard (I do a lot of mathematical stuff at work)
<White_Flame> (it's funny calling it boxing when no box for it is allocated; the value stands alone on the heap with the tagged pointers)
<White_Flame> citizenandrew: that only really affects you on function call boundaries. Any array access, or locally declared values can eliminate the boxing for computation
<White_Flame> *specialized array access, to be precise
<citizenandrew> White_Flame: yes, of course. Liberal use of inlining is what we generally do (as well as using (simple-array double-float (*)). You can't stack allocate double floats either...
roklein has quit [Quit: Leaving]
treflip has quit [Quit: good night]
kpoeck has joined #commonlisp
citizenandrew has left #commonlisp [#commonlisp]
aartaka has quit [Ping timeout: 246 seconds]
yewscion has quit [Read error: Connection reset by peer]
aartaka has joined #commonlisp
<Josh_2> Does anyone know how to redirect a user with Ningle? Obv hunchentoot just has #'redirect...
<Josh_2> I could always just host part of this on its own hunchentoot handler and leave the REST api on ningle :think:
<Josh_2> hnng I dont want to have to perform the http redirect manually
aartaka has quit [Ping timeout: 246 seconds]
aartaka has joined #commonlisp
causal has quit [Quit: WeeChat 3.5]
tane has joined #commonlisp
tane has quit [Changing host]
tane has joined #commonlisp
causal has joined #commonlisp
cosimone has joined #commonlisp
yewscion has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
akoana has joined #commonlisp
kpoeck has quit [Quit: Client closed]
Guest74 has quit [Quit: Connection closed]
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
<Josh_2> Think I'm just going to run a dedicated hunchentoot website on a different port :shrug:
karlosz has joined #commonlisp
<Josh_2> Dedicated website on different port requires more complicated Nginx config though :sob:
tyson2 has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 27.1]
karlosz has quit [Ping timeout: 244 seconds]
aartaka has quit [Ping timeout: 255 seconds]
tane has quit [Quit: Leaving]
rotateq has quit [Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)]
aartaka has joined #commonlisp