lisp123 has quit [Remote host closed the connection]
prxq has quit [Ping timeout: 258 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 272 seconds]
<char>
Could I get some help+review on my project? I know there are issues with it but I'm not sure where they are are what the best solutions are: https://github.com/charJe/cl-yxorp. Is it cool to ask for review here?
hafat has quit [Ping timeout: 256 seconds]
<Bike>
asking for a review here seems fine. is there anything in particular you are concerned about?
Fare has quit [Remote host closed the connection]
<beach>
Good morning everyone!
<beach>
char: Your code contains multiple violations of the rule on page 13 of the LUV slides. And your functions are too long.
lisp123 has joined #commonlisp
pillton has joined #commonlisp
<char>
The main thing I'm concerned about is I have an ignore-errors so if the client sends garbage data, it doesn't crash the whole server.
<beach>
char: Well, you can't really ask people to read your code selectively. All those violations are distractions to the person reading your code.
<beach>
And you really need to split up that function into multiple smaller ones, each one with a significant name.
lisp123 has quit [Ping timeout: 240 seconds]
PinealGlandOptic has quit [Quit: leaving]
<char>
are you saying that those are violations because the conditions are not boolean-only?
<beach>
Yes.
<beach>
Those are variables that have a non-trivial value, or perhaps a default value that happens to be NIL.
lisp-newbie has quit [Quit: This computer has gone to sleep]
<char>
beach: What would suggest instead of say "if sssl"?
<beach>
I haven't studied the code in detail (because of the distractions), but I would very likely do (if (null ssl) and then reverse the `then' and `else' branches. That is usually the right thing to do anyway, because another rule of programming says that one should handle special cases first to get them out of the way.
White_Flame has quit [Remote host closed the connection]
White_Flame has joined #commonlisp
Skyfire has joined #commonlisp
peterhil has quit [Ping timeout: 272 seconds]
Fare has quit [Remote host closed the connection]
<char>
I would not want to do (unless (null destination) though
<beach>
I am sorry to hear that.
<kakuhen>
char: how about (when destination ...)
<kakuhen>
i haven't read the entire project yet, just the build.lisp, but i'm not really in a position to judge other people's code
<moon-child>
that's what he is doing currently, and what beach objects to
<beach>
kakuhen: I just said that that is a violation of the rules on page 13 of the LUV slides.
<beach>
char: You asked for remarks. And I gave you some.
<kakuhen>
beach: I personally think (when destination ...) is more readable? I fail to see how this form violates p13 of the slides you sent.
<beach>
char: Even better would be to define a function (say) DESTINATION-IS-VALID-P and use it instead.
<beach>
kakuhen: I don't really care what you think personally. And these are not my opinions. They are the opinions of two people who have WAY more industrial experience than I do, in WAY bigger projects than mine. But perhaps your experiences matches theirs?
<kakuhen>
beach: My opinion is irrelevant, sure. But this does not answer my real question.
<kakuhen>
How does the form in question violate p13 of the slides you sent?
<beach>
I just said that.
<beach>
Those are variables that have a non-trivial value, or perhaps a default value that happens to be NIL. They are not Boolean variables.
<char>
beach: I appreciate you input; I just wanted some clarification so I fully understood what was being suggested. I have not heard of the LUV slides before: thanks for sharing.
<beach>
Pleasure.
lisp-newbie has joined #commonlisp
waleee has quit [Ping timeout: 250 seconds]
waleee has joined #commonlisp
Fare has joined #commonlisp
peterhil has joined #commonlisp
jimka has joined #commonlisp
lisp123 has joined #commonlisp
sm2n_ is now known as sm2n
<kakuhen>
char: you probably won't care, but I managed to modify the build.lisp to produce binaries on ccl and ecl
<kakuhen>
I'm not sure if the ecl binary works as intended since it prints "Computing Hangul syllabus names" and stays like that in the terminal, but the executable IS listening on port 8080
<char>
kakuhen: I actually care a lot. could you make a pull request?
karlosz has joined #commonlisp
<kakuhen>
I'm not posting the diff yet because there is one caveat: the executable produced by ecl isn't named "cl-yxorp," and I'm trying to see what I can do to 'fix' this
<kakuhen>
no need to give me credit; these are pretty well-documented functions and I did this just for fun
<char>
kakuhen: thanks. Have tru trued using :monolithic instead of :prologue ?
<kakuhen>
Decided against it since I attempted to mimick the behavior of sb-ext:save-lisp-and-die and ccl:save-application
<kakuhen>
mimic*
<sm2n>
note that ecl needs you to manually require the sockets library
<kakuhen>
If I recall correct, SBCL will produce a single binary with the lisp image (a compressed core image in your case), and CCL will do the same thing mod compression.
<sm2n>
bit me recently
<kakuhen>
regarding ccl:save-application, you can use :purify t to shave off a few kilobytes but in my experience the differences are pretty negligible
jimka has quit [Ping timeout: 258 seconds]
lisp-newbie has quit [Quit: Leaving]
Fare has quit [Ping timeout: 258 seconds]
Bike has quit [Quit: sleep]
<char>
kakuhen: kakuhen: Also It is important that the command line arguments and Ctrl+C work properly
lisp123 has joined #commonlisp
<kakuhen>
consider using UIOP for processing cmdline arguments; from a quick glance I notice you do different things on SBCL and non-SBCL impls
<kakuhen>
UIOP should definitely have a wrapper for this, and translate to whatever extension the user's implementation has, assuming it is supported.
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<char>
kakuhen: I'll try that again
<char>
beach: do you agree with LUV p12: "If you know type information, declare it" ?
karlosz has quit [Quit: karlosz]
<char>
Bike: another thing I know is just wrong is how to rename a bt:thread
retropikzel has joined #commonlisp
rain3 has joined #commonlisp
srhm has quit [Quit: Konversation terminated!]
<beach>
char: Yes, but let me moderate that a bit...
<beach>
First of all, I don't think it means literally putting a DECLARE expression in there.
<beach>
For example I often write methods specialized to a particular type like (defmethod m ((p person)) ...), and such method do not require a DECLARE expression. The type of P is already "declared".
<beach>
Second, we need to distinguish between abstract types and concrete types.
<beach>
I agree that abstract types should be declared when needed, but it is a mistake to declare concrete type, because those may very well change later on. This is a standard argument against static (manifest) typing, which is that it forces the programmer to make decisions about concrete types too early.
<beach>
So then, often an explicit declaration is not necessary. If you have a function like (defun f (person organization)...) it is kind of superfluous to include (declare (type person person) (type organization organization))
<beach>
I think the meaning of the rule is to clearly communicate to the person reading the code what kind of objects are manipulated, and that fact can be communicated in several different ways.
<moon-child>
beach: in which respect, the surety of 'know' should perhaps be emphasized; if you have an idea about what type something has, but you think it is liable to change, you should not declare it as such
<beach>
Sure, but such doubt is common mostly for concrete types.
<beach>
And it is perfectly valid to use DEFTYPE to define an abstract type as a concrete one, and then use the name of the abstract type everywhere, because it is less likely to change.
<beach>
Like if I represent a person as a vector, I would not put type declarations like (defun f (person) (declare (type vector person)) ...)
<mfiano>
I completely agree with beach
<beach>
Thank you!
<mfiano>
One of Lisp's greatest strengths is quickly prototyping complex behavior
<mfiano>
Adding types too early will force you to write more code and slower than needs to be
<mfiano>
Add types (optimize and document) later
<mfiano>
I used to code Lisp like C in that I type annotated everything and used structs over classes and regular functions over generic ones, and overly complex architectural layout choices all because of this.
<mfiano>
It is not worth it
char has quit [Remote host closed the connection]
char has joined #commonlisp
froggey has quit [Ping timeout: 252 seconds]
<mfiano>
Types are only needed for micro-optimizing beyond your macro-optimized data structure and algorithm choices (on compilers that honor type annotations), and as a supplement to the readability of your code where the code itself is not already clear (the class specializers in method-lambda-lists is one example of already clear). Even still I tend not to add contracts and the like until much later
<mfiano>
in development of complex systems, as it just gets in the way and makes the code less malleable in the initial design.
lisp123 has quit [Ping timeout: 272 seconds]
froggey has joined #commonlisp
retropikzel has quit [Quit: Leaving]
selwyn has joined #commonlisp
retropikzel has joined #commonlisp
CrashTestDummy has joined #commonlisp
Lord_of_Life_ has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 252 seconds]
Lord_of_Life has quit [Ping timeout: 258 seconds]
Lord_of_Life_ is now known as Lord_of_Life
sander has joined #commonlisp
retropikzel has quit [Quit: Leaving]
jimka has joined #commonlisp
retropikzel has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
pve has joined #commonlisp
CrashTestDummy2 has joined #commonlisp
CrashTestDummy has quit [Ping timeout: 258 seconds]
amb007 has quit [Read error: Connection reset by peer]
CrashTestDummy has joined #commonlisp
amb007 has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 258 seconds]
CrashTestDummy2 has joined #commonlisp
CrashTestDummy3 has joined #commonlisp
CrashTestDummy has quit [Ping timeout: 258 seconds]
CrashTestDummy2 has quit [Ping timeout: 258 seconds]
CrashTestDummy has joined #commonlisp
CrashTestDummy2 has joined #commonlisp
CrashTestDummy3 has quit [Ping timeout: 258 seconds]
CrashTestDummy3 has joined #commonlisp
CrashTestDummy has quit [Ping timeout: 276 seconds]
CrashTestDummy2 has quit [Ping timeout: 258 seconds]
CrashTestDummy2 has joined #commonlisp
selwyn has quit [Read error: Connection reset by peer]
CrashTestDummy3 has quit [Ping timeout: 258 seconds]
rgherdt_ has joined #commonlisp
cosimone has joined #commonlisp
retropikzel has quit [Quit: Leaving]
amb007 has quit [Ping timeout: 258 seconds]
jimka has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
taiju has quit [Ping timeout: 258 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
hendursa1 has joined #commonlisp
hendursaga has quit [Ping timeout: 244 seconds]
jimka has joined #commonlisp
makomo has joined #commonlisp
jimka has quit [Ping timeout: 240 seconds]
Inline has quit [Quit: Leaving]
Inline has joined #commonlisp
amb007 has quit [Ping timeout: 250 seconds]
gaqwas has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
taiju has joined #commonlisp
tfeb has joined #commonlisp
tfeb has quit [Quit: died]
lisp123 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
lisp123 has quit [Ping timeout: 245 seconds]
amb007 has quit [Ping timeout: 245 seconds]
jimka has joined #commonlisp
peterhil has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
xlei has quit [Ping timeout: 245 seconds]
amb007 has quit [Read error: Connection reset by peer]
markasoftware has quit [Ping timeout: 252 seconds]
derelict has joined #commonlisp
akoana has left #commonlisp [Leaving]
amb007 has joined #commonlisp
splittist has quit [Ping timeout: 256 seconds]
ski has quit [Ping timeout: 256 seconds]
luis has quit [Ping timeout: 245 seconds]
drmeister has quit [Ping timeout: 272 seconds]
luis has joined #commonlisp
dbotton has quit [Ping timeout: 272 seconds]
etiago has quit [Ping timeout: 252 seconds]
tux0r has quit [Ping timeout: 256 seconds]
ullbeking has joined #commonlisp
etiago has joined #commonlisp
ggoes has quit [Ping timeout: 256 seconds]
markasoftware has joined #commonlisp
energizer has quit [Ping timeout: 252 seconds]
hugo has joined #commonlisp
conjunctive has quit [Ping timeout: 250 seconds]
<_death>
strange that log4cl doesn't let you supply a pprint dispatch table to be used :/
conjunctive has joined #commonlisp
splittist has joined #commonlisp
drmeister has joined #commonlisp
dbotton has joined #commonlisp
palter has quit [Ping timeout: 250 seconds]
vats has quit [Ping timeout: 256 seconds]
Krystof has quit [Ping timeout: 256 seconds]
jmercouris has quit [Ping timeout: 272 seconds]
jsatk has quit [Ping timeout: 272 seconds]
xlei has joined #commonlisp
moon-child has quit [Ping timeout: 245 seconds]
tux0r has joined #commonlisp
hhdave has quit [Ping timeout: 245 seconds]
minion has quit [Read error: Connection reset by peer]
specbot has quit [Remote host closed the connection]
amb007 has quit [Read error: Connection reset by peer]
<phoe>
does it have any logging hook that you can supply?
jimka has quit [Ping timeout: 245 seconds]
minion has joined #commonlisp
palter has joined #commonlisp
luna-is-here has quit [Ping timeout: 252 seconds]
specbot has joined #commonlisp
Fare has joined #commonlisp
luna-is-here has joined #commonlisp
ski has joined #commonlisp
jgkamat has quit [Ping timeout: 245 seconds]
jmercouris has joined #commonlisp
<_death>
maybe by defining a new layout
<scymtym>
i was going to ask where you like to specify and apply the pprint dispatch table
amb007 has joined #commonlisp
jgkamat has joined #commonlisp
<scymtym>
a superclass of PATTERN-LAYOUT and SIMPLE-LAYOUT seems like one candidate
dilated_dinosaur has quit [Ping timeout: 245 seconds]
moon-child has joined #commonlisp
dilated_dinosaur has joined #commonlisp
hhdave has joined #commonlisp
<_death>
I take it you mean a subclass
<scymtym>
no, since you expressed surprise that the feature is not already supported, i was thinking about where builtin support would go
random-nick has joined #commonlisp
<scymtym>
log4cl is a sharplispers project but that doesn't mean it has to remain unchanged
jsatk has joined #commonlisp
<_death>
ah, I see.. in the config language you can have :pretty take an optional pprint-dispatch, I guess
ggoes has joined #commonlisp
<scymtym>
sounds reasonable. do you think passing that argument to the pattern and applying it in a layout-to-stream :around method would make sense? i know the original author was very concerned about performance, but mainly of inactive log statements, if i recall correctly. so executing additional methods in case of active log statements doesn't seem too bad
makomo has quit [Ping timeout: 245 seconds]
makomo has joined #commonlisp
Fare has quit [Ping timeout: 256 seconds]
<_death>
I'm actually not sure where it binds print-pretty to T
energizer has joined #commonlisp
<_death>
it seems to do that in pattern layout's %< .. and then the config language uses that
tux0r has quit [Ping timeout: 245 seconds]
tux0r has joined #commonlisp
<scymtym>
yes, configurator changes %< to %<{pretty} if that option has been supplied in the configuration
<_death>
so my first instinct is to bind *print-pprint-dispatch* at the same time it binds *print-pretty*
<_death>
seems the %< pretty has an optional parameter to specify right-margin
nij- has quit [Quit: Using Circe, the loveliest of all IRC clients]
<scymtym>
that seems most in line with the current implementation
jimka has joined #commonlisp
<scymtym>
if think it would better if the configurator parametrized the pattern parser instead of modifying the pattern
<scymtym>
that would also make the proposed change easier
retropikel has joined #commonlisp
Fare has joined #commonlisp
<_death>
yeah.. I didn't expect the config implementation to rely heavily pattern-layout before taking a look
<_death>
*on
<_death>
it may be that in practice only pattern-layout and possibly subclasses are used, and simple-layout is just a token "it's possible"
sander has quit [Ping timeout: 258 seconds]
dlowe has joined #commonlisp
lisp123 has joined #commonlisp
<scymtym>
possible. i guess another use case is replacing the entire appender and not needing a layout at all
* scymtym
vanishes for a bit
scymtym has quit [Remote host closed the connection]
sander has joined #commonlisp
cosimone has quit [Remote host closed the connection]
selwyn has joined #commonlisp
kakuhen has quit [Quit: Leaving...]
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
lisp123 has quit [Ping timeout: 250 seconds]
rgherdt has joined #commonlisp
rgherdt_ has quit [Ping timeout: 256 seconds]
jimka has quit [Ping timeout: 250 seconds]
pillton has quit [Ping timeout: 260 seconds]
hafat has joined #commonlisp
jimka has joined #commonlisp
SAL9000 has quit [Quit: WeeChat 2.9]
jimka has quit [Ping timeout: 245 seconds]
lisp123 has joined #commonlisp
hafat has quit [Quit: Leaving]
attila_lendvai has joined #commonlisp
lisp123 has quit [Ping timeout: 256 seconds]
attila_lendvai has quit [Read error: Connection reset by peer]
attila_lendvai has joined #commonlisp
jimka has joined #commonlisp
vats has joined #commonlisp
cage has joined #commonlisp
cosimone has joined #commonlisp
tyson2 has joined #commonlisp
attila_lendvai has quit [Ping timeout: 245 seconds]
waleee has quit [Ping timeout: 245 seconds]
waleee has joined #commonlisp
SAL9000 has joined #commonlisp
hafat has joined #commonlisp
scymtym has joined #commonlisp
Lycurgus has joined #commonlisp
dsk has quit [Ping timeout: 256 seconds]
peterhil has quit [Ping timeout: 276 seconds]
attila_lendvai has joined #commonlisp
hafat has quit [Quit: Leaving]
silasfox has quit [Ping timeout: 258 seconds]
rgherdt has quit [Ping timeout: 250 seconds]
amb007 has quit [Ping timeout: 256 seconds]
rgherdt has joined #commonlisp
amb007 has joined #commonlisp
CrashTestDummy3 has joined #commonlisp
gaqwas has quit [Ping timeout: 256 seconds]
CrashTestDummy2 has quit [Ping timeout: 258 seconds]
jimka has quit [Ping timeout: 250 seconds]
Lycurgus has quit [Quit: Exeunt]
lotuseater has joined #commonlisp
pve_ has joined #commonlisp
lisp123 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
pve has quit [Ping timeout: 272 seconds]
lisp123 has quit [Ping timeout: 250 seconds]
yitzi has joined #commonlisp
jimka has joined #commonlisp
mrcom has quit [Quit: Leaving]
mrcom has joined #commonlisp
elf_fortrez has joined #commonlisp
tyson2 has quit [Quit: ERC (IRC client for Emacs 27.2)]
attila_lendvai has quit [Ping timeout: 245 seconds]
jimka has quit [Ping timeout: 245 seconds]
lisp123 has joined #commonlisp
hugo has quit [Ping timeout: 256 seconds]
<lisp123>
lisp-newbie: thanks for sharing the link, I haven't read it, but it looks interesting so I will
hugo has joined #commonlisp
elf_fortrez has quit [Ping timeout: 246 seconds]
gaqwas has joined #commonlisp
amb007 has quit [Ping timeout: 245 seconds]
jimka has joined #commonlisp
amb007 has joined #commonlisp
santiagopim has joined #commonlisp
tyson2 has joined #commonlisp
lisp123_ has joined #commonlisp
lisp123 has quit [Ping timeout: 240 seconds]
pegaso has joined #commonlisp
selwyn has quit [Read error: Connection reset by peer]
peterhil has joined #commonlisp
jimka has quit [Ping timeout: 256 seconds]
Josh_2 has joined #commonlisp
lisp123_ has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
Lycurgus has joined #commonlisp
jimka has joined #commonlisp
lisp123_ has joined #commonlisp
lisp123 has quit [Ping timeout: 252 seconds]
lisp123_ has quit [Ping timeout: 252 seconds]
azimut has quit [Ping timeout: 244 seconds]
lisp123 has joined #commonlisp
lisp123_ has joined #commonlisp
lisp123 has quit [Ping timeout: 252 seconds]
lisp123_ has quit [Read error: Connection reset by peer]
Fare has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 252 seconds]
tyson2 has quit [Quit: ERC (IRC client for Emacs 27.2)]
Lycurgus has quit [Quit: Exeunt]
jimka has quit [Ping timeout: 245 seconds]
jimka has joined #commonlisp
jimka has quit [Ping timeout: 240 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Ping timeout: 252 seconds]
selwyn has joined #commonlisp
blihp has joined #commonlisp
jimka has joined #commonlisp
cosimone` has joined #commonlisp
cosimone has quit [Ping timeout: 256 seconds]
cosimone` has quit [Ping timeout: 245 seconds]
lisp123 has joined #commonlisp
lisp123 has quit [Client Quit]
char has quit [Remote host closed the connection]
jimka has quit [Ping timeout: 272 seconds]
IPmonger has joined #commonlisp
IPmonger has quit [Remote host closed the connection]
Patternmaster has quit [Quit: leaving]
Patternmaster has joined #commonlisp
Patternmaster has quit [Client Quit]
Patternmaster has joined #commonlisp
cosimone has joined #commonlisp
jimka has joined #commonlisp
jimka has quit [Ping timeout: 250 seconds]
amb007 has quit [Ping timeout: 245 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
pegaso has quit [Quit: Leaving]
amb007 has joined #commonlisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #commonlisp
vats has quit [Remote host closed the connection]
cosimone has quit [Ping timeout: 245 seconds]
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #commonlisp
notzmv has quit [Ping timeout: 258 seconds]
Josh_2 has quit [Remote host closed the connection]
tyson2 has joined #commonlisp
attila_lendvai has joined #commonlisp
lisp123 has joined #commonlisp
tux0r has quit [Ping timeout: 245 seconds]
attila_lendvai has quit [Read error: Connection reset by peer]
attila_lendvai has joined #commonlisp
tux0r has joined #commonlisp
jmercouris has quit [Ping timeout: 245 seconds]
d_run has quit [Ping timeout: 276 seconds]
iisi has quit [Ping timeout: 240 seconds]
IUSR has quit [Ping timeout: 240 seconds]
tyson2 has left #commonlisp [ERC (IRC client for Emacs 27.2)]
gendl has quit [Read error: Connection reset by peer]
jmercouris has joined #commonlisp
gendl has joined #commonlisp
d_run has joined #commonlisp
IUSR has joined #commonlisp
iisi has joined #commonlisp
tyson2 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
Josh_2 has joined #commonlisp
cage has quit [Remote host closed the connection]
shka has quit [Ping timeout: 258 seconds]
aeth has quit [Ping timeout: 258 seconds]
aeth has joined #commonlisp
aeth_ has joined #commonlisp
aeth has quit [Killed (NickServ (GHOST command used by aeth_))]
aeth_ is now known as aeth
jeosol has quit [Quit: Connection closed]
jeosol has joined #commonlisp
rain3 has quit [Ping timeout: 258 seconds]
attila_lendvai has quit [Ping timeout: 252 seconds]
selwyn has quit [Read error: Connection reset by peer]
jimka has joined #commonlisp
tyson2 has quit [Quit: ERC (IRC client for Emacs 27.2)]
dlowe has quit [Remote host closed the connection]
dlowe has joined #commonlisp
dlowe has quit [Remote host closed the connection]
dlowe has joined #commonlisp
Bike has joined #commonlisp
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
attila_lendvai has joined #commonlisp
amb007 has joined #commonlisp
notzmv has joined #commonlisp
attila_lendvai has quit [Ping timeout: 258 seconds]
amb007 has quit [Ping timeout: 240 seconds]
amb007 has joined #commonlisp
jimka has quit [Ping timeout: 245 seconds]
aeth has quit [Ping timeout: 240 seconds]
aeth has joined #commonlisp
nirnam has quit [Read error: Connection reset by peer]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
lad has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
nature has joined #commonlisp
yitzi has quit [Quit: Leaving]
<lisp123>
Is there a way to macroexpand a function
<lisp123>
?
<lisp123>
I assume not, but it would be nice
<phoe>
lisp123: what do you mean, macroexpand a function
scymtym has quit [Ping timeout: 245 seconds]
<phoe>
you mean, get its source code?
<lisp123>
yes
<phoe>
this is usually achieved via xrefs - try M-. in emacs when your point is over a Lisp symbol
<lisp123>
I have a macro that creates a function, so I want to be able to macroexpand the function
<phoe>
there is also FUNCTION-LAMBDA-EXPRESSION but this is not required to work
<lisp123>
vs. macroexpanding the macro
<phoe>
you can't macroexpand a function
<phoe>
but you can preserve the source code somewhere if you *really* need it
amb007 has quit [Read error: Connection reset by peer]
<phoe>
or you can macroexpand your macro call and read the generated source code this way
<phoe>
if your (DEFINE-FOO ...) expands into a (DEFUN ...) then you can read your source code there
<phoe>
slime-macrostep is pure love in these situations
amb007 has joined #commonlisp
<lisp123>
or you can macroexpand your macro call and read the generated source code this way >> this is what I am doing
<lisp123>
I will look into slime-macrostep, thanks for the suggestion :)
<phoe>
slime-macrostep is lovely because it expands macros *inline* in your source code
<phoe>
no need to jump into the REPL to issue MACROEXPAND-1 calls and copy large blocks of code
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<lisp123>
phoe: this stuff is amazing :D
<lisp123>
perfect what I was looking for (issue was I had macros inside macros insides functions inside functions - hence wanting to macroexpand functions)
<hayley>
The aim is to have something resembling interior pointers to arrays with packed structs, but still with type safety and ideally some ability to redefine structure classes.
dsk has quit [Ping timeout: 245 seconds]
nirnam has quit [Ping timeout: 250 seconds]
random-nick has quit [Ping timeout: 272 seconds]
Bike has quit [Quit: Connection closed]
jimka has quit [Ping timeout: 250 seconds]
<pjb>
hayley: I understand the drive for specialized array, but note that CL already has defstruct (:type vector) and displaced arrays…
<moon-child>
hayley: that sounds like a slightly convoluted way of doing arenas
<hayley>
Well, I suppose that is possible. But it prohibits redefining the structure class and the pattern to optimize is perhaps less obvious.
<hayley>
moon-child: To me it is still an array of structs, but I guess it can be used as an arena.
<hayley>
An example that I am vaguely interested in would be to put a cached hash, key and value on the same cache line. If the hash is a fixnum, that is already possible to be fair, but if you really want to keep it unboxed, you need packed structs.
jimka has joined #commonlisp
<hayley>
Come to think of it, the space overhead for "handles" in idea 2 is about the same as for having separate instances, so it's probably fine.