samedi has quit [Remote host closed the connection]
samedi has joined #commonlisp
samedi has quit [Remote host closed the connection]
occ has joined #commonlisp
tibfulv has quit [Remote host closed the connection]
tibfulv has joined #commonlisp
Demosthenex has quit [Ping timeout: 260 seconds]
Demosthenex has joined #commonlisp
masinter has joined #commonlisp
igemnace has joined #commonlisp
rtypo has quit [Ping timeout: 240 seconds]
epony has joined #commonlisp
NicknameJohn has quit [Ping timeout: 260 seconds]
jurassic has joined #commonlisp
neon_ has joined #commonlisp
neon has quit [Remote host closed the connection]
<jeosol>
I think I may have memory leak in my long running application that seems to cause it to crash/restart the machine. I want to capture the output of (room) as the application is running (e.g., after each iteration) so I can create a time series for the different categories of space usage when (room) is called. is this reasonable?
m5zs7k has quit [Ping timeout: 265 seconds]
m5zs7k has joined #commonlisp
<pjb>
jeosol: yes. The verbose output of ROOM is written on *standard-output* so you may want to redirect it to collect it in a single file. Unfortunately, the result is implementation dependent, so you cannot count on it to be meaningful.
<jeosol>
pjb: you are so right. I was using with-output-to-string, get the string, process it. Unfortunately, the output is ordered in decreasing order of the usage. My initial implementation was processing the parsed string line by line, and reading of the usage.
<pjb>
jeosol: that's a good idea, since you can then #+ the implementation of this parsing depending on the implementation, to return always the same value(s).
<jeosol>
pjb: Of course this is not robust and a particular category may be on a different line due to the usage for that category since (room) for sbcl the output are sorted in decreasing order of the usage. So I may have to resort to some regex or esrap
dcb has quit [Quit: MSN Messenger v2.16.1]
<jeosol>
I only use SBCL for all development, so I wouldn't mind to base it of SBCL.
<jeosol>
The code base is large and I think implementing this usage time series will at least give me some idea of where to look at. When I started coding, I was just creating arrays on the fly and I wasn't being very discipline. For my design, I elected to use variables to hold all computations for my runs. So when the runs are done, no further
<jeosol>
post-processing is needed.
<jeosol>
Of course, this requires having a lot more variables. Another option, is write intermediate results to files, after the runs are done, have another code post-process the intermediate files and generate other statistics. I am thinking this latter option should have been the better one.
<jeosol>
pjb: thanks for your suggestion, I appreciate it.
<pjb>
Have fun!
rgherdt has joined #commonlisp
azimut has quit [Ping timeout: 255 seconds]
jurassic has quit [Ping timeout: 250 seconds]
attila_lendvai has joined #commonlisp
semarie has quit [Remote host closed the connection]
semarie has joined #commonlisp
pkal has joined #commonlisp
masinter has quit [Ping timeout: 255 seconds]
ahc has joined #commonlisp
epony has quit [Remote host closed the connection]
MajorBiscuit has joined #commonlisp
occ has quit [Ping timeout: 276 seconds]
occ has joined #commonlisp
LW has joined #commonlisp
LW has quit [Client Quit]
ahc has quit [Quit: Client closed]
not-treflip has joined #commonlisp
MajorBiscuit has quit [Quit: WeeChat 3.6]
attila_lendvai has quit [Ping timeout: 276 seconds]
poselyqualityles has quit [Quit: Using Circe, the loveliest of all IRC clients]
shka has joined #commonlisp
not-treflip has quit [Quit: Quit]
treflip has joined #commonlisp
epony has joined #commonlisp
remexre has quit [Ping timeout: 250 seconds]
remexre has joined #commonlisp
neon_ has quit [Remote host closed the connection]
jurassic has joined #commonlisp
occ has quit [Ping timeout: 260 seconds]
occ has joined #commonlisp
attila_lendvai has joined #commonlisp
rogersm has quit [Read error: Connection reset by peer]
BrownJenkin has quit [Ping timeout: 252 seconds]
edgarvincent[m] has quit [Ping timeout: 252 seconds]
lordmzte has quit [Write error: Connection reset by peer]
Gnuxie has quit [Read error: Connection reset by peer]
infra_red[m] has quit [Write error: Connection reset by peer]
AadVersteden[m] has quit [Read error: Connection reset by peer]
emacsomancer[m] has quit [Write error: Connection reset by peer]
loke[m] has quit [Write error: Connection reset by peer]
Mrtn[m] has quit [Write error: Connection reset by peer]
paulapatience has quit [Read error: Connection reset by peer]
char[m] has quit [Read error: Connection reset by peer]
roygbyte[m] has quit [Write error: Connection reset by peer]
bitblit1 has quit [Read error: Connection reset by peer]
nicm[m] has quit [Read error: Connection reset by peer]
yitzi has quit [Read error: Connection reset by peer]
jryans has quit [Write error: Connection reset by peer]
Duuqnd has quit [Write error: Connection reset by peer]
kakuhen has quit [Write error: Connection reset by peer]
bitspook[m] has quit [Write error: Connection reset by peer]
VOID[m] has quit [Write error: Connection reset by peer]
artemon has quit [Write error: Connection reset by peer]
edwlan[m] has quit [Read error: Connection reset by peer]
alanz has quit [Read error: Connection reset by peer]
dipper has quit [Remote host closed the connection]
Mrtn[m] has joined #commonlisp
yitzi has joined #commonlisp
infra_red[m] has joined #commonlisp
Gnuxie has joined #commonlisp
kakuhen has joined #commonlisp
Duuqnd has joined #commonlisp
lordmzte has joined #commonlisp
char[m] has joined #commonlisp
bitspook[m] has joined #commonlisp
paulapatience has joined #commonlisp
BrownJenkin has joined #commonlisp
artemon has joined #commonlisp
VOID[m] has joined #commonlisp
edwlan[m] has joined #commonlisp
nicm[m] has joined #commonlisp
alanz has joined #commonlisp
jryans has joined #commonlisp
bitblit1 has joined #commonlisp
loke[m] has joined #commonlisp
emacsomancer[m] has joined #commonlisp
roygbyte[m] has joined #commonlisp
AadVersteden[m] has joined #commonlisp
attila_lendvai has quit [Ping timeout: 246 seconds]
random-nick has joined #commonlisp
<splittist>
Is there a proper way for referring to 'resetting' a closed stream? Obviously not all streams can be reset, but where one can, is there a good way to refer to doing this? Or would such a thing deeply undermine the nature of streaminess?
edwlan[m] has quit [Ping timeout: 246 seconds]
AadVersteden[m] has quit [Ping timeout: 240 seconds]
nicm[m] has quit [Ping timeout: 240 seconds]
VOID[m] has quit [Ping timeout: 240 seconds]
yitzi has quit [Ping timeout: 240 seconds]
edgarvincent[m] has quit [Ping timeout: 246 seconds]
loke[m] has quit [Ping timeout: 252 seconds]
infra_red[m] has quit [Ping timeout: 252 seconds]
artemon has quit [Ping timeout: 256 seconds]
char[m] has quit [Ping timeout: 265 seconds]
jryans has quit [Ping timeout: 248 seconds]
bitblit1 has quit [Ping timeout: 246 seconds]
BrownJenkin has quit [Ping timeout: 246 seconds]
alanz has quit [Ping timeout: 246 seconds]
kakuhen has quit [Ping timeout: 246 seconds]
emacsomancer[m] has quit [Ping timeout: 264 seconds]
Gnuxie has quit [Ping timeout: 265 seconds]
roygbyte[m] has quit [Ping timeout: 265 seconds]
bitspook[m] has quit [Ping timeout: 265 seconds]
Duuqnd has quit [Ping timeout: 265 seconds]
paulapatience has quit [Ping timeout: 265 seconds]
Mrtn[m] has quit [Ping timeout: 265 seconds]
lordmzte has quit [Ping timeout: 265 seconds]
<semz>
a special case of seeking, maybe?
<jackdaniel>
I don't think that there is a /reopen/ operation specified
<jackdaniel>
resetting the stream-file-position is the closest thing, but it is not after the stream is closed
edwlan[m] has joined #commonlisp
bitblit1 has joined #commonlisp
alanz has joined #commonlisp
yitzi has joined #commonlisp
nicm[m] has joined #commonlisp
char[m] has joined #commonlisp
jryans has joined #commonlisp
edgarvincent[m] has joined #commonlisp
kakuhen has joined #commonlisp
AadVersteden[m] has joined #commonlisp
roygbyte[m] has joined #commonlisp
VOID[m] has joined #commonlisp
loke[m] has joined #commonlisp
infra_red[m] has joined #commonlisp
artemon has joined #commonlisp
BrownJenkin has joined #commonlisp
pve has joined #commonlisp
scymtym has joined #commonlisp
<scymtym>
you probably would have to "manually" ensure that there is no unread character in the stream. the way i read the UNREAD-CHAR and FILE-POSITION entries, unread characters remain "queued" after seeking
attila_lendvai has joined #commonlisp
paulapatience has joined #commonlisp
Mrtn[m] has joined #commonlisp
lordmzte has joined #commonlisp
Duuqnd has joined #commonlisp
bitspook[m] has joined #commonlisp
jeosol has quit [Quit: Client closed]
emacsomancer[m] has joined #commonlisp
attila_lendvai has quit [Ping timeout: 240 seconds]
Gnuxie has joined #commonlisp
Gnuxie has quit [Read error: Connection reset by peer]
roygbyte[m] has quit [Remote host closed the connection]
nicm[m] has quit [Read error: Connection reset by peer]
lordmzte has quit [Read error: Connection reset by peer]
loke[m] has quit [Remote host closed the connection]
char[m] has quit [Read error: Connection reset by peer]
yitzi has quit [Read error: Connection reset by peer]
edwlan[m] has quit [Read error: Connection reset by peer]
jryans has quit [Write error: Connection reset by peer]
artemon has quit [Remote host closed the connection]
BrownJenkin has quit [Write error: Connection reset by peer]
paulapatience has quit [Read error: Connection reset by peer]
emacsomancer[m] has quit [Write error: Connection reset by peer]
Mrtn[m] has quit [Write error: Connection reset by peer]
alanz has quit [Remote host closed the connection]
infra_red[m] has quit [Remote host closed the connection]
Duuqnd has quit [Write error: Connection reset by peer]
bitspook[m] has quit [Read error: Connection reset by peer]
kakuhen has quit [Write error: Connection reset by peer]
AadVersteden[m] has quit [Remote host closed the connection]
VOID[m] has quit [Write error: Connection reset by peer]
bitblit1 has quit [Read error: Connection reset by peer]
edgarvincent[m] has quit [Read error: Connection reset by peer]
edgarvincent[m] has joined #commonlisp
occ has joined #commonlisp
Mrtn[m] has joined #commonlisp
Duuqnd has joined #commonlisp
bitspook[m] has joined #commonlisp
yitzi has joined #commonlisp
kakuhen has joined #commonlisp
lordmzte has joined #commonlisp
char[m] has joined #commonlisp
infra_red[m] has joined #commonlisp
BrownJenkin has joined #commonlisp
VOID[m] has joined #commonlisp
artemon has joined #commonlisp
jryans has joined #commonlisp
loke[m] has joined #commonlisp
Gnuxie has joined #commonlisp
nicm[m] has joined #commonlisp
edwlan[m] has joined #commonlisp
alanz has joined #commonlisp
emacsomancer[m] has joined #commonlisp
bitblit1 has joined #commonlisp
paulapatience has joined #commonlisp
roygbyte[m] has joined #commonlisp
AadVersteden[m] has joined #commonlisp
scymtym_ has joined #commonlisp
scymtym has quit [Ping timeout: 260 seconds]
Guest3 has joined #commonlisp
Guest3 has quit [Client Quit]
karlosz has joined #commonlisp
azimut has joined #commonlisp
cage has joined #commonlisp
pfd has quit [Quit: Client closed]
uddipiggu has joined #commonlisp
chrcav has quit [Ping timeout: 252 seconds]
chrcav has joined #commonlisp
karlosz has quit [Quit: karlosz]
karlosz has joined #commonlisp
jeosol has joined #commonlisp
jmdaemon has quit [Ping timeout: 240 seconds]
masinter has joined #commonlisp
jeffrey has joined #commonlisp
<beach>
Th ANSI test suite for MAPCAR contains a test with the form (MAPCAR #'APPEND) and the test expects a condition of type PROGRAM-ERROR to be signaled. But it seems to me that this test does not test the implementation of the function MAPCAR, but of the compiler. No?
karlosz has quit [Quit: karlosz]
<semz>
Maybe there used to be old implementations where the first list argument to mapcar wasn't mandatory
<beach>
Put differently, is the code for MAPCAR expected to signal a PROGRAM-ERROR when no lists are given? I would think not since PROGRAM-ERROR is about incorrect program syntax, and the form that invoked MAPCAR this way could be something like (FUNCALL SOME-FUNCTION #'APPEND) and there is no syntax error there.
<beach>
semz: No, the ANSI test suite is right that the form should signal an error.
<beach>
I am just questioning the error type that is expected to be signaled.
<masinter>
there are three pilars in standards
<semz>
I mean that it's testing these old implementations for CL conformance
<masinter>
there's the specification, the implementations, the test suites
<beach>
semz: No, it is testing ANSI Common Lisp correctly.
<masinter>
what you want is a common language -- you can write a spec, you can write a test suite, you can build implementations
<masinter>
the test suite should predict whether an implementation matches the specification
<semz>
beach: I mean that there may have been lisps (meanwhile absorbed by CL) where (mapcar #'append) was not an error, and that's why this test exists and is in the mapcar suite.
<semz>
this is speculation though
<beach>
semz: Maybe so, and I think it is a good test.
<beach>
semz: But I don't think it should expect a PROGRAM-ERROR.
<masinter>
the test suite often leads when it shouldn't. if there were a cleanup issue i would vote for RETURN NIL option
<masinter>
(MAPCAR #'APPEND) => NIL
<semz>
clhs 3.5.1.2 suggests to me that in safe code it should
<masinter>
that would be logical and make it work like the LOOP translation
<semz>
oh, specbot doesn't trigger when it's in a longer post
<beach>
semz: Right you are. Thank you!
<_death>
I'm not sure there was ever a lisp where mapcar could take fewer than 2 arguments
<beach>
AHA, but that means I can't define MAPCAR the way I did. I did (defun mapcar (function &rest lists) and for a program error to be signaled, I must define it as (defun mapcar (function list &rest more-lists)
<_death>
right, the grammar has "lists+"
<beach>
Yes.
<beach>
semz: So since my definition has a single required parameter, PROGRAM-ERROR should not be signaled.
<beach>
So then the question is, is it not allowed to define the lambda list the way I did?
<beach>
I think it is allowed, and I think the test suite should not expect a PROGRAM-ERROR because the test suite can't know how the implementation wrote the lambda list.
<beach>
Anyway, not terribly important. But an interesting discussion. Thanks semz!
<beach>
_death: Thank you! This confirms my position I think.
<beach>
... and this means SBCL is not doing it that way.
<_death>
I think this means that if you use "function &rest lists" you need to check for non-null lists yourself and (probably) signal a program-error
<beach>
Hmm.
<beach>
I see PROGRAM-ERROR as something that the compiler detects, and not the implementation of a standard function.
<beach>
Anyway, I need to think about it some more.
<gilberth>
Depends on whether you say e.g. (defun mapcar (f &rest lists) ...) or (defun mapcar (f list &rest more) ...). In the former, I expect that the implementation of MAPCAR signals that PROGRAM-ERROR. Consider the argument list parsing your Lisp implementation provides as a convenience :-)
<_death>
exactly
<beach>
gilberth: That's pretty much what _death says as well. However, the page referred to seems to strongly advise against the latter case.
<_death>
beach: why? the spec just needs this trick so that it's easy to describe the semantics of rest arguments as a whole
<gilberth>
I agree with _death.
<beach>
_death: That's not how I read 1.4.4.20.3
<_death>
from my memory (and again, I don't have any lisp manuals with me right now) previous lisps had mapcar take two arguments and I think CL extended it so that it could take more
<gilberth>
Begins with there is no standard function to ask for the lambda-list of a function. So even something like (defun cons (&rest args) ...) would be fine as long as that implementation of CONS would check the argument list on its own. To me it doesn't matter whether the implementation of a function uses builtin lambda-list parsing or rolls its own.
<gilberth>
And? This function can always punt. And what do you expect it gives for MAPCAR. CL doesn't know about this &rest args+ notation.
<beach>
OK. Thanks again, semz, _death, gilberth.
<gilberth>
masinter: Not only Interlisp. Standard Lisp is that way around as well. But then you cannot pass more than one list to travel along.
<_death>
gilberth: but then you can extend it to (list &rest functions+) and apply the composed function to each item
<gilberth>
Like (mapcar (mapcar list f1) f2) = (mapcar list f1 f2)? Oh, that never occurred to me.
masinter has quit [Remote host closed the connection]
<_death>
Common Interlisp
<gilberth>
Cute.
kevingal has joined #commonlisp
kevingal_ has joined #commonlisp
<gilberth>
I propose a CARMAP function, which works that way.
<_death>
CARNAP the fexpr version
masinter has joined #commonlisp
dino_tutter has quit [Read error: Connection reset by peer]
jeffrey has quit [Ping timeout: 246 seconds]
NotThatRPG has joined #commonlisp
rtypo has joined #commonlisp
ebrasca has joined #commonlisp
lucasta has joined #commonlisp
attila_lendvai has joined #commonlisp
jeffrey has joined #commonlisp
attila_lendvai has quit [Ping timeout: 240 seconds]
jurassic has quit [Remote host closed the connection]
skin has joined #commonlisp
treflip has quit [Remote host closed the connection]
skin has quit [Read error: Connection reset by peer]
<edwlan[m]>
I like OVER
<edwlan[m]>
Used:
<edwlan[m]>
(funcall (over functions+) lists+)
rogersm has joined #commonlisp
ogamita` is now known as ogamita
tyson2 has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
<ogamita>
You're close to the functional programming proposed by Backus in his famous paper. Implement a set of utility functions to be able to write your functions without using variables, just by composing other functions. Basically (setf (fdefinition my-new-function) (some (composition (of (other functions) f2) f3) f4))
<ogamita>
ie, stop using funcall. Use: (fset myfun (partial (compose funcall over) f1 f2 f3)) (myfun l1 l2 l3)
ogamita has quit [Quit: b]
<edwlan[m]>
Yeah, this is more or less how I write a lot of programs these days
<edwlan[m]>
Have a utility library I use for this
pjb` has joined #commonlisp
pjb` is now known as ogamita
skin has joined #commonlisp
MajorBiscuit has joined #commonlisp
MajorBiscuit has quit [Client Quit]
MajorBiscuit has joined #commonlisp
tyson2 has joined #commonlisp
NotThatRPG has quit [Ping timeout: 240 seconds]
MajorBiscuit has quit [Ping timeout: 252 seconds]
tyson2 has quit [Remote host closed the connection]
igemnace has quit [Remote host closed the connection]
tyson2 has joined #commonlisp
karlosz has joined #commonlisp
Guest74 has joined #commonlisp
skin has quit [Read error: Connection reset by peer]
Guest74 has quit [Client Quit]
NotThatRPG has joined #commonlisp
MajorBiscuit has joined #commonlisp
dcb has joined #commonlisp
xristos has joined #commonlisp
attila_lendvai has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
dino_tutter has joined #commonlisp
tyson2 has joined #commonlisp
zxcvz has joined #commonlisp
skin has joined #commonlisp
MajorBiscuit has quit [Quit: WeeChat 3.6]
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
skin has quit [Remote host closed the connection]
tasty has quit [Quit: rebooting for kernel updates]
awhow has quit [Quit: Lost terminal]
NotThatRPG has joined #commonlisp
skin has joined #commonlisp
tasty has joined #commonlisp
tasty has quit [Changing host]
tasty has joined #commonlisp
lucasta has quit [Remote host closed the connection]
tyson2 has quit [Remote host closed the connection]
<Shinmera>
And if you clone quicklisp-projects, you can update the meta it reads in with (org.shirakumo.redist:parse-quicklisp-projects "quicklisp-projects/") to make all the projects point to their actual upstreams.
<Shinmera>
And from there you can update your official dist clone from sources whenever you like with (org.shirakumo.redist:compile "quicklisp" :update T)
<Shinmera>
Naturally you can also remove or add projects as you like
<Shinmera>
Or change their upstreams, etc.
morganw has joined #commonlisp
jeosol has quit [Quit: Client closed]
jeosol has joined #commonlisp
zxcvz has quit [Quit: zxcvz]
shka has quit [Ping timeout: 265 seconds]
occ has quit [Ping timeout: 246 seconds]
jurassic has joined #commonlisp
occ has joined #commonlisp
attila_lendvai has quit [Ping timeout: 240 seconds]
attila_lendvai has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 28.2]
jeffrey has joined #commonlisp
rgherdt has quit [Remote host closed the connection]
attila_lendvai has quit [Ping timeout: 255 seconds]
jmdaemon has joined #commonlisp
lisper29 has joined #commonlisp
NotThatRPG has quit [Remote host closed the connection]
NotThatRPG has joined #commonlisp
pve has quit [Quit: leaving]
rtoy has joined #commonlisp
NotThatRPG has quit [Ping timeout: 276 seconds]
Gleefre has joined #commonlisp
kevingal has quit [Ping timeout: 240 seconds]
kevingal_ has quit [Ping timeout: 248 seconds]
Gleefre has quit [Remote host closed the connection]
Gleefre has joined #commonlisp
Gleefre has quit [Remote host closed the connection]
kaskal has quit [Ping timeout: 255 seconds]
nij- has joined #commonlisp
sjl has joined #commonlisp
kaskal has joined #commonlisp
<nij->
Hi :) Depending on the env variable X, I wish to run two different forms: (case X (0 (quickload :a) (a:func)) (1 (quickload :b) (b:func))).
<nij->
However, reader complains because it tries to resolve the package b even in the 0th case.
<nij->
Any elegant way to resolve this?
<edwlan[m]>
uiop has a useful function for this
<nij->
Lemme look at its manual. Thanks for the hint.
<edwlan[m]>
(UIOP:SYMBOL-CALL PACKAGE NAME &rest ARGS)
kevingal has joined #commonlisp
kevingal_ has joined #commonlisp
morganw has quit [Remote host closed the connection]
<edwlan[m]>
Depending on what you’re doing, it might be better to use the environment variable to push a value into features and then use #+
<nij->
Oh.. in my case I actuall have something more like (case x (0 (quickload :a) 'a:a) (1 (quickload :b) 'b:b)).. so not a function call.
<nij->
But I can write my own function mimicking symbol call.
lisper29 has quit [Quit: Leaving]
kaskal has quit [Ping timeout: 240 seconds]
<nij->
Ah, features seem to be the best solution to my problem. Thank you :)