<aeth>
drmeister: Do you mean something like running everything wrapped like this? (handler-bind ((t (lambda (c) (declare (ignore c)) (invoke-restart 'abort)))) (/ 1 0))
<aeth>
Bike: drmeister said "just returns" so I'm assuming (although I could be incorrect) that it's always selecting abort
awolven has joined #lisp
<Bike>
that's just ignore-errors
shifty has joined #lisp
<aeth>
ah, I've never had to do that
edgar-xxx has quit [Quit: Leaving]
Kundry_Wag has joined #lisp
karlosz has quit [Quit: karlosz]
edgar-rft has joined #lisp
Kundry_Wag has quit [Ping timeout: 244 seconds]
<pjb>
drmeister: *debugger-hook* is called by invoke-debugger, so it might be a little drastic to bind it to override the debugger. You would do that in a proprietary program to avoid users having access to the inners of your lisp image…
<pjb>
drmeister: wrapping your main (or main loop body) in a handler-bind is a better solution, but it's inconvenient when you still have bugs. For this, I use handler-bind, and print out the backtrace before doing the non-local exit from handler-bind. You can also still call invoke-debugger in the handler-bind upon when a flag is set to be able to debug if needed.
<aeth>
pjb: in a proprietary program you'd launch it with a one-liner that includes --disable-debugger (or whatever the equivalent is if it's not SBCL... all of the command line arguments are different in different implementations)
<aeth>
(which of course means that that script could be edited)
lanu has joined #lisp
<pjb>
aeth: nope, I don't use implementation specific stuff. I prefer to implement the functionalities I need using CL features.
<aeth>
well, you could just write a script that selects the appropriate name based on the implementation... but if it's proprietary you'd probably just write to one
<aeth>
there are libraries that can kind of handle this sort of thing portably afaik
red-dot has joined #lisp
<pjb>
Yeah. Like setting *debugger-hook* is a 100% purely conforming way DUH!
renzhi has joined #lisp
smazga has joined #lisp
lanu has quit [Quit: lanu]
semz has quit [Ping timeout: 264 seconds]
lanu has joined #lisp
smazga has quit [Ping timeout: 245 seconds]
abhixec has quit [Quit: leaving]
EvW has quit [Ping timeout: 250 seconds]
semz has joined #lisp
semz has quit [Changing host]
semz has joined #lisp
iskander has quit [Ping timeout: 252 seconds]
iskander has joined #lisp
saravia has joined #lisp
<DrDuck>
so if you plan on going through 'art of the metaobject protocol', do you have to copy/compile the code from appendix D, the closette system, first before you can really interact with the book and its exercises?
<Bike>
no, your lisp implementation probably has mop built in.
<DrDuck>
yeah but closette is supposed to have a lot of restrictions and things not built in
<DrDuck>
that's the impression i'm getting
<DrDuck>
and then the book wants you to add things slowly?
<Bike>
well it's not exactly an instruction manual
<Bike>
it's a description of what i did
<DrDuck>
O_o
<Bike>
er
<Bike>
they
<Bike>
sorry
<DrDuck>
welp... alright
jack-thomas has joined #lisp
FreeBirdLjj has joined #lisp
davr0s_ has quit [Remote host closed the connection]
davr0s has quit [Remote host closed the connection]
<jack-thomas>
Hi, I'm having this weird thing where if I try to compile a file that defines a struct and then immediately tries to define a constant whos value is an instance of said struct SBCL says "no such function make-car" (where struct name was car)
<jack-thomas>
But if I run the same code at REPL it is fine
<no-defun-allowed>
I've never had defconstant work as expected, honestly.
<jack-thomas>
So I'm doing (defstruct car :color) and then (defconstant BLACK-CAR (make-car :color 'black))
<no-defun-allowed>
I had something similar go wrong, with (defclass foo ...) (defconstant +thing+ (make-instance 'foo)) and SBCL didn't like that a bit.
<Bike>
defstruct is evaluated at loda time, but the constant is evaluated at compile time
<jack-thomas>
Bike: hmmm
<no-defun-allowed>
Probably something about compilation environments -- Bike is probably right.
skibo has joined #lisp
<jack-thomas>
Hi Bike can you explain 'load time' to me
FreeBirdLjj has quit [Ping timeout: 258 seconds]
<jack-thomas>
And do I need to read something to avoid gotcha's like this in the future or what do I do lol
<jack-thomas>
Sorry if that is such a helpless question
<Bike>
sure. so, you're doing like (compile-file "foo.lisp") or something, right? maybe indirectly through emacs.
<jack-thomas>
Yes
<Bike>
what that does is you know, compile the file, it produces a compiled file. Then you (load "foo.fasl") and that loads the compiled file.
<jack-thomas>
Perfect thanks
<Bike>
"load time" is stuff that happens during load, "compile time" is stuff that happens during compile
<Bike>
when you compile a file you don't actually execute the code in it
<Bike>
like if you have a file with just (print 'x) in it or something, it won't actually print until you load the file
<Bike>
similarly, in your file the defstruct won't actually be executed until you load the file
<jack-thomas>
Right haha. Thanks for the breakdown
<jack-thomas>
WHy is that though
<Bike>
Why is what?
<jack-thomas>
Oh shit nvm
<Bike>
Ok so anyway, defconstant is allowed to actually evaluate the constant at compile time, and evidently in your implementation it's trying to do so.
<Bike>
But it can't, because the defstruct hasn't actually been executed. Thus, problems.
<jack-thomas>
Yeah that makes sense. I guess that part is the only weird part.
<Bike>
it's a little unusual.
<Bike>
the way you can deal with it is using the eval-when operator to force the compiler to evaluate things.
<Bike>
but in this case you'd probably run into other issues because of how defconstant works if evaluated repeatedly
iskander has quit [Ping timeout: 268 seconds]
akoana has left #lisp ["Leaving"]
ahungry has joined #lisp
<pjb>
jack-thomas: use eval-when
<pjb>
and defparameter instead of defconstant.
jeosol has joined #lisp
skibo has quit [Quit: WeeChat 2.3]
skibo has joined #lisp
<jack-thomas>
pjb: I will look into that, I appreciate it. Bike: you the best, thanks for giving me the right words. I'm trying to wrap my head around what compiling really means in CL. It looks like compiling is not the process of translating source code into native instructions, like I used to assume
iskander has joined #lisp
anewuser has joined #lisp
<pjb>
jack-thomas: yes, it is this. But like loading, it's done one form at a time. Notably, some parts of some forms can be evaluated while compiling. Notably, macros are expanded at compilation-time (ie. macro functions are called).
<pjb>
jack-thomas: that said, you are probably doing something wrong when wanting to load your structure definition into the compiler to instantiate structure instance at compilation-time. You most probably don't want to do that.
<pjb>
jack-thomas: first, don't use defconstant. Your problem probably comes from this error.
semz has quit [Ping timeout: 264 seconds]
<pjb>
defconstant is designed to let the compiler inline some literal values into the code. It can be useful only on values that can ACTUALLY be immediate values in the native code. Ie. small integers, and that's it.
<pjb>
(this is why the expression of the value of the constant has to be evaluated at compilation time).
<Bike>
not necessarily. that's most of the process in most implementations, though.
<Bike>
but lisp lets you put arbitrary objects in compiled code, and execute arbitrary effects while compiling.
<pjb>
Even trying to use constant variables in CASE clauses doesn't work: defconstant is not designed for that!
<pjb>
Bike: Yes, it does. But this is advanced stuff, that you do if you really want to develop a compiler plug-in.
<pjb>
Anyway, don't use defconstant, it doesn't do what you think.
skibo has quit [Quit: WeeChat 2.3]
Jeanne-Kamikaze has joined #lisp
skibo has joined #lisp
<jack-thomas>
pjb: Is there a recognized way to make a special variable final?
papachan has quit [Ping timeout: 245 seconds]
skibo has quit [Quit: WeeChat 2.3]
<pjb>
jack-thomas: not a CL notion. But you can define symbol macros.
skibo has joined #lisp
semz has joined #lisp
semz has quit [Changing host]
semz has joined #lisp
jack-thomas has quit [Ping timeout: 246 seconds]
saravia has quit [Ping timeout: 245 seconds]
FreeBirdLjj has joined #lisp
karlosz has joined #lisp
jack-thomas has joined #lisp
FreeBirdLjj has quit [Ping timeout: 245 seconds]
notzmv has quit [Remote host closed the connection]
makomo_ has joined #lisp
smazga has joined #lisp
makomo has quit [Ping timeout: 245 seconds]
<White_Flame>
jack-thomas: btw, if you want to solve your original problem, put the defstruct in a file that's loaded before the one with your defconstant
jack-thomas has quit [Ping timeout: 245 seconds]
<White_Flame>
...and timed out
smazga has quit [Client Quit]
saravia has joined #lisp
makomo_ has quit [Ping timeout: 245 seconds]
saravia has quit [Quit: Leaving]
orivej has quit [Ping timeout: 246 seconds]
<beach>
Good morning everyone!
lucasb has quit [Quit: Connection closed for inactivity]
renzhi has quit [Ping timeout: 258 seconds]
notzmv has joined #lisp
makomo_ has joined #lisp
orivej has joined #lisp
lanu has left #lisp [#lisp]
stux|RC-- has quit [Quit: Aloha!]
stux|RC has joined #lisp
astronavt has quit [Quit: ZNC 1.7.2+deb3 - https://znc.in]
astronavt has joined #lisp
astronavt has quit [Remote host closed the connection]
astronavt has joined #lisp
astronavt has quit [Remote host closed the connection]
astronavt has joined #lisp
mindthelion has quit [Ping timeout: 276 seconds]
astronavt has quit [Remote host closed the connection]
astronavt has joined #lisp
Bike has quit [Quit: Lost terminal]
astronavt has quit [Remote host closed the connection]
astronavt has joined #lisp
<drmeister>
pjb: Thank you for your perspective on *debugger-hook*
astronavt has quit [Remote host closed the connection]
astronavt has joined #lisp
gravicappa has joined #lisp
astronavt has quit [Remote host closed the connection]
permagreen has joined #lisp
marusich has joined #lisp
schjetne has joined #lisp
techquila has joined #lisp
schjetne has quit [Ping timeout: 268 seconds]
Involuntary has joined #lisp
Jeanne-Kamikaze has quit [Ping timeout: 245 seconds]
marusich has quit [Ping timeout: 276 seconds]
astronavt has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 245 seconds]
makomo_ has quit [Ping timeout: 268 seconds]
Involuntary has quit [Quit: Leaving]
xkapastel has quit [Quit: Connection closed for inactivity]
FreeBirdLjj has joined #lisp
karlosz has quit [Quit: karlosz]
FreeBirdLjj has quit [Ping timeout: 244 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 258 seconds]
Necktwi has quit [Ping timeout: 245 seconds]
Necktwi has joined #lisp
libertyprime has joined #lisp
Inline has quit [Quit: Leaving]
dale has quit [Quit: My computer has gone to sleep]
schjetne has joined #lisp
schjetne has quit [Ping timeout: 246 seconds]
froggey has quit [Ping timeout: 245 seconds]
froggey has joined #lisp
nanoz has joined #lisp
sauvin has joined #lisp
Fare has quit [Ping timeout: 245 seconds]
jprajzne has joined #lisp
ahungry has quit [Remote host closed the connection]
paul0 has quit [Ping timeout: 244 seconds]
scymtym has quit [Ping timeout: 264 seconds]
ljavorsk_ has joined #lisp
dddddd has quit [Remote host closed the connection]
manualcrank has quit [Quit: WeeChat 1.9.1]
jeosol has quit [Remote host closed the connection]
cosimone has quit [Remote host closed the connection]
makomo_ has joined #lisp
cosimone has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
ljavorsk has quit [Quit: I'm out, bye]
ljavorsk has joined #lisp
ljavorsk has quit [Client Quit]
ljavorsk has joined #lisp
ljavorsk has quit [Client Quit]
ljavorsk has joined #lisp
makomo_ is now known as makomo
hhdave has joined #lisp
nostoi has quit [Quit: Verlassend.]
heisig has joined #lisp
frgo has quit [Remote host closed the connection]
khisanth_ has quit [Ping timeout: 245 seconds]
sunset_NOVA has joined #lisp
hhdave_ has joined #lisp
hhdave has quit [Ping timeout: 246 seconds]
hhdave_ is now known as hhdave
sunset_NOVA has quit [Client Quit]
Insanity_ has joined #lisp
blandest has joined #lisp
frgo has joined #lisp
khisanth_ has joined #lisp
frgo has quit [Ping timeout: 245 seconds]
Kundry_Wag has joined #lisp
FreeBirdLjj has joined #lisp
Kundry_Wag has quit [Ping timeout: 258 seconds]
frgo has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
FreeBirdLjj has quit [Ping timeout: 245 seconds]
Lord_of_Life has quit [Ping timeout: 245 seconds]
orivej has quit [Ping timeout: 245 seconds]
Lord_of_Life has joined #lisp
dmiles has quit [Ping timeout: 245 seconds]
<no-defun-allowed>
What's the easiest type of parser to implement?
<beach>
Recursive descent.
lavaflow has quit [Ping timeout: 268 seconds]
<beach>
Different techniques have different restrictions.
<beach>
Recursive descent can't handle left recursion, for instance.
<Shinmera>
even easier: a parser that can only recognise constants.
<no-defun-allowed>
Would that work with particuarly complicated grammars? I'm new to parsing, but I'd like to parse an ASCII guitar tab (or any kind of n-dimensional "image", but that's what I have in mind).
<beach>
Oh, then that may be way simpler.
<no-defun-allowed>
Hm, well, I don't think there's much recursion there, so I should be safe.
<beach>
Yeah.
<beach>
Then I suggest "ad hoc" instead.
<beach>
Just write some code that recognizes it.
<no-defun-allowed>
Right then.
<no-defun-allowed>
Thanks.
<beach>
Sure.
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
kajo has quit [Ping timeout: 250 seconds]
<no-defun-allowed>
My biggest concern is since tablature isn't a very well specified format, I would have to be very lenient and the parser might become very large. Should I be less worried?
dmiles has joined #lisp
dmiles has quit [Read error: Connection reset by peer]
<beach>
I know nothing about the format, so I can't tell. But I suspect it is not hard.
<edgar-rft>
no-defun-allowed: music notation usually is intentionally sloppy to give the musician room for impovement according to his/he skill level. Just try out what you get, Lisp also gives you room for improvement. :-)
<edgar-rft>
In case of doubt: I know howto read guitar tabs (with my eyes) and can help at least with that.
<no-defun-allowed>
I've read a lot too, but I'm not sure how to start writing a program to read the format.
<White_Flame>
FORTH style postfix is the easiest "parser" to implement, if you're talking about executing a stream of instructions
<White_Flame>
it doesn't bother with an AST or anything, though, if you're looking for intermediate representations
Necktwi has quit [Ping timeout: 245 seconds]
<White_Flame>
I don't think that standard notions of programming language parsing is going to be meaningful for ascii art, though
afterK has quit [Quit: WeeChat 1.9]
AndrewYoung has joined #lisp
<White_Flame>
there's absolutely no standards in tab, except for numbers meaning frets. Timing of notes, how repeats are represented, all the various annotations, are all completely ad hoc
<beach>
Isn't there a tablature format in MusicXML or a similar structured format?
<White_Flame>
yes, certain programs have their own specific format. But most guitar tab is literally ascii art trying to describe music in the tabber's own way
<no-defun-allowed>
^^
<beach>
Wow.
<White_Flame>
it became a thing long before modern graphical editors were conceived
<White_Flame>
and has in general been viewed as lesser than "real" sheet music, thus there being less commercial focus on it
zigpaw has quit [Quit: Vanishing into darkness in 1..2..3...]
zigpaw has joined #lisp
<no-defun-allowed>
I think the whole process of sharing guitar notation on the internet is fubar. There's at least 3 different websites for putting pseudostandardised formatted files (like Guitar Pro, MuseScore), and three dozen websites you should look at to have a good chance of finding text tab for a particular song, and half I believe are owned by one company that puts out a lot of bullshit.
<edgar-rft>
beach: Guitar tabs is an attempt for an ASCII-art-like repesentation for things musicians formely scribbled on paper. It's more like pictures than ASCII text and there is no standard except maybe that most guitars have 6 strings. :-)
<White_Flame>
no-defun-allowed: what's your goal for the information you'd wish to extract?
<no-defun-allowed>
The bare minimum I want to do is read off the bars, then reflow them so that they use whatever paper width I use better.
<White_Flame>
ah, then that should be pretty doable without much parsing at all
<White_Flame>
basically, you want to take a block of lines and put them at the end of a previous block of lines
<White_Flame>
regardless even of their content
<no-defun-allowed>
But then I'm not sure how else I'll need to backscratch, so parsing the art into some nice representation would be better in the long run.
Kundry_Wag has joined #lisp
<White_Flame>
especially because it's all monospace-aligned, I think you'd want to keep it as blind strings of text. If you parse them into other stuff, you'd have to deal with realigning output vertically again
<White_Flame>
even things like the chord & time signature notes above them, should retain their spacing, etc
<White_Flame>
and things like trampling Esus then Em into "EsuEm" because of lack of spacing is going to be horrible to try to unpack, unless you're just making tool code for this particular file
<White_Flame>
I've personally never seen that before
<no-defun-allowed>
From past experiences with some proper sheet music editors, they like to pin labels to notes to make the output expectable.
stepnem_ has joined #lisp
<no-defun-allowed>
Yeah, I think the author ran out of horizontal space and gave up there.
Necktwi has joined #lisp
stepnem has quit [Read error: Connection reset by peer]
<White_Flame>
well, the horizontal width is arbitrary to how much complexity is in a line
<White_Flame>
the author just didn't feel like making it wider since the notes themselves didn't warrant it, though they did so where the notes did
<edgar-rft>
sorry, my #%$§! R-key is still broken
blandest has left #lisp ["rcirc on GNU Emacs 27.0.50"]
JohnMS_WORK has quit [Read error: Connection reset by peer]
JohnMS_WORK has joined #lisp
cosimone has quit [Quit: Leaving]
AndrewYoung has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
AndrewYoung has joined #lisp
awolven has quit [Ping timeout: 252 seconds]
nanoz has quit [Ping timeout: 245 seconds]
libertyprime has joined #lisp
nanoz has joined #lisp
SaganMan has joined #lisp
<SaganMan>
Morning beach!
Kaisyu7 has quit [Quit: ERC (IRC client for Emacs 26.2)]
<Shinmera>
I recently changed some policies about my libraries and projects. I thought they might be of general interest. https://reader.tymoon.eu/article/377
<thijso>
Shinmera: thanks for sharing. I like the changes you've made. I've been meaning to ask, the pictures you have accompanying your posts: are they made by you?
lucasb has joined #lisp
paul0 has joined #lisp
<Shinmera>
Most of them are not, no.
Lord_of_Life has quit [Max SendQ exceeded]
Lord_of_Life has joined #lisp
<Shinmera>
I have a pretty distinct style, so it shouldn't be difficult to see which are mine and which aren't.
Fare has joined #lisp
Fare has quit [Ping timeout: 245 seconds]
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
Kaisyu has quit [Quit: Connection closed for inactivity]
elinow has joined #lisp
Bike has joined #lisp
bjorkint0sh has quit [Quit: Leaving]
bjorkintosh has joined #lisp
yoeljacobsen has joined #lisp
alexanderbarbosa has quit [Remote host closed the connection]
protokaryote has joined #lisp
scymtym has quit [Remote host closed the connection]
libertyprime has quit [Quit: leaving]
shifty has quit [Ping timeout: 268 seconds]
dddddd has joined #lisp
cosimone has joined #lisp
bitmapper has joined #lisp
Ricchi has joined #lisp
Ricchi has quit [Remote host closed the connection]
Ricchi has joined #lisp
cosimone has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
Achylles has joined #lisp
FreeBirdLjj has quit [Ping timeout: 245 seconds]
frgo has joined #lisp
protokaryote has quit [Quit: protokaryote]
heisig has quit [Quit: Leaving]
protokaryote has joined #lisp
protokaryote has quit [Client Quit]
dale_ has joined #lisp
dale_ is now known as dale
frgo has quit [Remote host closed the connection]
v88m has joined #lisp
papachan has joined #lisp
minion has quit [Remote host closed the connection]
minion has joined #lisp
jprajzne has quit [Ping timeout: 244 seconds]
jprajzne has joined #lisp
yoeljacobsen has quit [Ping timeout: 258 seconds]
makomo has quit [Ping timeout: 245 seconds]
Kundry_Wag has joined #lisp
orivej has quit [Ping timeout: 244 seconds]
makomo has joined #lisp
kaun_ has joined #lisp
kaun_ has left #lisp [#lisp]
Kundry_Wag has quit [Ping timeout: 244 seconds]
FreeBirdLjj has joined #lisp
orivej has joined #lisp
bitmapper has quit []
red-dot has joined #lisp
notzmv has quit [Ping timeout: 245 seconds]
orivej has quit [Ping timeout: 245 seconds]
yoeljacobsen has joined #lisp
Necktwi has quit [Remote host closed the connection]
frgo has joined #lisp
<pjb>
White_Flame: nonetheless, there exist several textual parsers working in 2D; for example HAL/S, and ascii-art mathematical expression parsers.
<pjb>
White_Flame: also, usual parsing techniques have been applied to other domains than language parsing, including computer vision ! (eg. reconsititution of symbolic 3D model of scenes).
<pjb>
White_Flame: (in this case, the tokens used were the line intersections).
<pjb>
Shinmera: AFAIK, a license clause that forbids claiming credit makes it a non-free licence.
<Shinmera>
I mean claiming credit for things you have not done. Just red the license.
<Shinmera>
*read
<pjb>
But it's ok as an open source license.
smazga has joined #lisp
EvW has joined #lisp
<pjb>
Shinmera: it's a Reversed FQDN, not a FQDN ;-)
yoeljacobsen has quit [Ping timeout: 245 seconds]
Oladon_work has joined #lisp
<pjb>
Shinmera: is there not a *features* for local nicknames? You should prefix your local nicknames clauses with a #+…
<Shinmera>
That would just delay the failures.
schjetne has quit [Ping timeout: 246 seconds]
<pjb>
But using local nicknames is purely cosmetic, so their absence should not break your software.
<pjb>
They should be left to the final code, just like nicknames.
aautcsh has joined #lisp
aautcsh has quit [Client Quit]
<Shinmera>
If you want to write your libraries prefixing every symbol of another package with a huge, cluttering name, go ahead. I won't.
orivej has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
papachan has quit [Quit: Leaving]
rippa has joined #lisp
Achylles has quit [Remote host closed the connection]
lavaflow has joined #lisp
Kevslinger has quit [Quit: Connection closed for inactivity]
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
EvW has quit [Ping timeout: 250 seconds]
renzhi has joined #lisp
EvW has joined #lisp
<remexre>
kinda weird question -- is there a way to tell if a keyword argument is passed, when nil is a valid value that I want to handle separately from "not present"
<remexre>
rigt now I'm doing &key (foo 'not-present) and having logic to test for that instead of nil, but it's gross
<schweers>
I believe this works the same for keyword and optional arguments.
<pjb>
Yes.
<remexre>
oh, sweet; thanks!
<pjb>
For &key, you can choose a different symbol name for the keyword and the parameter: (defun f (&key ((:bar foo) 'default foo-present-p)) (list foo foo-present-p)) (f) #| --> (default nil) |# (f :bar 42) #| --> (42 t) |#
<remexre>
does CLHS not mention this at all in 03_dad.htm, or am I bad at reading :|
<pjb>
and which of the exported special variables of cl-ncurses would that be? *COLOR-PAIRS* *COLORS* *COLS* *CURSCR* *ECSDELAY**LINES* *NEWSCR* *STDSCR* *TABSIZE*
<remexre>
it's not exported, as far as I can tell?
<remexre>
*ncurses-search-paths*
<pjb>
ok. But it's not exported :-(
<pjb>
In that case, you will have to define the package before loading the system.
<remexre>
ugh, and I'll need to specify all the exports too, won't I
<remexre>
yeah on consideration probably trying croatoan
taylor has joined #lisp
smazga has quit [Quit: leaving]
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
shifty has joined #lisp
akoana has left #lisp ["Leaving"]
LiamH has quit [Quit: Leaving.]
shifty has quit [Ping timeout: 246 seconds]
shifty has joined #lisp
moldybits has joined #lisp
Krystof has quit [Ping timeout: 244 seconds]
awolven has joined #lisp
<aeth>
Wow, generating basic HTML for me is only 22 lines, most of which are special cases to handle attributes as leading plists, e.g. (:a :href "https://example.com" "Example.com")
<aeth>
Well, there's one last special case (other than escaping characters like < and &) and that's handling forms like <br>
red-dot has joined #lisp
alexanderbarbosa has joined #lisp
reppie has joined #lisp
x[LGWs4x4i]uG2N0 has quit [Ping timeout: 245 seconds]