jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | offtopic --> #lispcafe
<Josh_2> _death: I tried to get Parmenides to run on CL, seems that *most* of the tests pass
<Josh_2> still doesn't compile without supervision though
nicktick has joined #lisp
<_death> Josh_2: here's my patch from back then https://gist.github.com/death/3a9d34fcb092ad7d78ac65e62135be0f
lisbeths has left #lisp ["ERC (IRC client for Emacs 26.3)"]
dilated_dinosaur has quit [Ping timeout: 240 seconds]
<_death> it seems all tests in prtest.lisp pass here
<Josh_2> hmmm
<Josh_2> they don't for me
<Josh_2> I've already made all of the changes you have in that gist but it still struggles to compile, I also had a problem where some function that expected a symbol was getting a list containing a keyword
<Josh_2> Well it compiles if I manually compile one function before the others
<Josh_2> but the tests fail
shifty has joined #lisp
mrcom has joined #lisp
<Josh_2> theres name conflicts as well
<_death> ah, yes.. I loaded it without compiling
<Josh_2> I converted it into an asdf system etc
<Josh_2> I can put on github if you want to look?
<_death> sure.. maybe tomorrow (it's time to sleep now)
thijso has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
thijso has joined #lisp
<Josh_2> _death: https://github.com/K1D77A/Parmenides I added the problems I have with compiling as issues
<_death> hmm, maybe better to fork the lispm repo which has the original code and then add your patch
<Josh_2> I can do that
<_death> I'll try to look at it tomorrow and maybe have some patches as well
iAmDecim has joined #lisp
<Josh_2> _death: https://github.com/K1D77A/Parmenides this is a fork, I don't know how to add issues though
orivej has quit [Read error: Connection reset by peer]
orivej_ has joined #lisp
iAmDecim has quit [Ping timeout: 240 seconds]
zigpaw1 has quit [Ping timeout: 256 seconds]
matsudachan has joined #lisp
zigpaw1 has joined #lisp
Josh_2 has quit [Ping timeout: 265 seconds]
space_otter has joined #lisp
Necktwi has quit [Ping timeout: 265 seconds]
_jrjsmrtn has joined #lisp
__jrjsmrtn__ has quit [Ping timeout: 260 seconds]
Oladon has joined #lisp
EvW has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
<phoe> enable this in the repo settings
Bourne has joined #lisp
matsudachan has quit [Quit: WeeChat 2.3]
nicktick has quit [Ping timeout: 256 seconds]
yamamotosama has joined #lisp
orivej_ has quit [Ping timeout: 265 seconds]
ravndal has quit [Ping timeout: 264 seconds]
rumbler31 has joined #lisp
brj has quit [Ping timeout: 265 seconds]
mangoicedtea has quit [Quit: Leaving]
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
dominic34 has joined #lisp
Bourne` has joined #lisp
brj has joined #lisp
Bourne has quit [Ping timeout: 256 seconds]
ravndal has joined #lisp
jesse1010 has quit [Read error: Connection reset by peer]
jesse1010 has joined #lisp
jesse1010 has quit [Remote host closed the connection]
john__ has joined #lisp
gaqwas has quit [Ping timeout: 258 seconds]
Lycurgus has joined #lisp
bsd4me has joined #lisp
Lycurgus has quit [Remote host closed the connection]
<kilimanjaro> Are there any obvious ways to speed this up (e.g. on SBCL), without using multiple cores? https://gist.github.com/kilimanjaro/72eef27b8bd435b82461bfa2124e12ec
<kilimanjaro> Specifically, the part within the `time` form
<kilimanjaro> I am just curious -- the C version seems to be ~4x faster, but I don't really have any sense of why
Necktwi has quit [Ping timeout: 265 seconds]
<kilimanjaro> (clang with -O3)
Necktwi has joined #lisp
<aeth> kilimanjaro: Is the C version identical to what you just wrote? Because that currently returns nothing, and so can be optimized to do nothihng, but won't in SBCL.
<aeth> *to do nothing
<kilimanjaro> let's suppose then that I am returning the array C
<kilimanjaro> the C version is doing that
<kilimanjaro> (rather, it's just given pointers to A,B,C)
<aeth> Well, you can do this: (deftype matrix () `(simple-array double-float (,+size+ ,+size+))) ; except in CCL, if you do this portably and want it to run in CCL you'll have to wrap the defconstant in an eval-when
<aeth> Then you can spin off the relevant part (and return c in the outer DOTIMES), e.g. (defun matmul-optimized (a b c) (declare (type matrix a b c) (optimize (speed 3) (debug 0))) (dotimes (i +size+ c) (dotimes (k +size+) (dotimes (j +size+) (incf (aref C i j) (* (aref A i k) (aref B k j)))))))
<aeth> And then you can look at the asm in the now smaller function. (disassemble #'matmul-optimized)
Necktwi has quit [Ping timeout: 240 seconds]
ldb has joined #lisp
aeth_ has joined #lisp
<aeth_> If you insist on having (safety 0) then you'll probably want to see the full asm in SBCL, i.e. (sb-disassem:disassemble-code-component #'matmul-optimized)
brj has quit [Ping timeout: 258 seconds]
aeth has quit [Disconnected by services]
aeth_ is now known as aeth
prite has quit [Ping timeout: 258 seconds]
<aeth> kilimanjaro: as for the C side, there's a website that does compiler asm output for such things because it's not built into C. You can then see how it differs. I forget the name of the site.
brj has joined #lisp
<aeth> heh, I think DuckDuckGo was filtering out "C" because it was too short so I searched for C++ instead. It's this. https://godbolt.org/
Necktwi has joined #lisp
<aeth> So if the shortened version that I wrote has subsantially different generated assembly to what godbolt says for C/C++, that's the performance difference and #sbcl might be interested.
<kilimanjaro> Thanks
<aeth> And if you (setf *print-case* :downcase) before you diassemble, you get the asm in lower case, which might help with the readability.
Bourne` has quit [Remote host closed the connection]
Bourne has joined #lisp
brj has quit [Ping timeout: 246 seconds]
prite has joined #lisp
<beach> Good morning everyone!
brj has joined #lisp
<aeth> and this keyboard apparently needs cleaning because some keys are no longer pressing all of the way and I dropped some random letters in there
<kilimanjaro> aeth: I think I see part of what is going on
<kilimanjaro> SBCL is able to use XMM registers but the generated code is doing 64 bit moves
bilegeek has joined #lisp
<kilimanjaro> clang has somehow unpacked things into 128 bit moves
<kilimanjaro> so basically, it rewrote the inner loop
<kilimanjaro> to work on pairs
<ldb> good morning
<kilimanjaro> e.g. the MOVUPD instructions in https://godbolt.org/z/srGsj1
rumbler31 has quit [Remote host closed the connection]
<beach> Hello ldb.
<kilimanjaro> in this gist (updated), the SBCL disassembly is shown and all of the moves into XMM registers are 64 bit https://gist.github.com/kilimanjaro/72eef27b8bd435b82461bfa2124e12ec
Christ0p1er has quit [Ping timeout: 240 seconds]
<kilimanjaro> aeth: thanks, this is a clear enough explanation
Christ0pher has joined #lisp
<kilimanjaro> so at the very least, if I want to write SBCL-specific code I can use https://pvk.ca/Blog/2013/06/05/fresh-in-sbcl-1-dot-1-8-sse-intrinsics/ etc
prite has quit [Ping timeout: 240 seconds]
Alloc has quit [Ping timeout: 244 seconds]
Alloc has joined #lisp
drl has quit [Read error: Connection reset by peer]
yamamotosama has quit [Quit: WeeChat 2.3]
ggole has joined #lisp
yamamotosama has joined #lisp
bsd4me has left #lisp ["Leaving"]
gravicappa has joined #lisp
ldb has quit [Quit: Connection closed]
ldb has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
iAmDecim has joined #lisp
narimiran has joined #lisp
edgar-rft has joined #lisp
yamamotosama has quit [Quit: WeeChat 2.3]
zigpaw1 has quit [Ping timeout: 240 seconds]
shangul has joined #lisp
lisbeths has joined #lisp
<lisbeths> The topic of this channel is not lisp, it is CLHS
<lisbeths> demonstrate that I am incorrect
iAmDecim has quit [Ping timeout: 240 seconds]
<beach> The topic of this channel is Common Lisp. The language itself, implementations of it, libraries and applications written in it, etc.
<lisbeths> Thats incorrect. The topic of this channel is the common lisp hyperspec.
<lisbeths> The logs will prove that my last statement is correct.
<beach> OK, good luck with that.
<lisbeths> #lisp is a supercategory of clhs
<lisbeths> there is more to what is expressed by the english word lisp than what is expressed in CLHS
<lisbeths> even if you would like to relegate it to just commmon lisp, there is more that is expressed within the context of the phrase "common lisp" than what is expressed in clhs
<lisbeths> you, beach, have held back the progress of lisp by 20 years
<beach> Yeah, sorry about that.
<lisbeths> newcomers hate this channel because this channel should be named #clhs based on the rules here
<lisbeths> you have probably turned countless people away by rudely expecting them to be able to read a document only accessable by software engineers
<ldb> so what's good about lisp that people all wants that
<lisbeths> You should create a channel named #CLHS or something like that, and transfer the rules of this channel to that one
<lisbeths> you sohuld not censor people woh want to talk about extending commmon lisp beyond the hyperspec
zigpaw1 has joined #lisp
<lisbeths> people may discuss #lisp but people may not discuss #programming-lisp
<lisbeths> that is basically a crime against humanity
<lisbeths> and its disgusting
<beach> lisbeths: I think we get the point. Thank you.
dominic34 has quit [Ping timeout: 240 seconds]
<lisbeths> Can you express to me in your own words what my point is do demonstrate that you understand what I've said
<lisbeths> I am calling you, beach, the bane of lisp in the 2000s and 2010s
<lisbeths> a person who has held the progress of lisp advocacy back
<lisbeths> The only reason I dare say this is I am not afraid of being banned anymore
<lisbeths> honestly you have done bad
Lord_of_Life has quit [Ping timeout: 240 seconds]
<lisbeths> you have done wrong to lisp programmers, but you have done it "perfectly", without error
wsinatra has quit [Ping timeout: 256 seconds]
<lisbeths> I half believe you are just an artificial intelligence behind that screen. A perfect machine made by the military or something.
<lisbeths> Whenever I come here you are always awake. An organic can't do that.
<lisbeths> You respond intantly. You have infinite free time. The logs might show this.
Alloc has quit [Ping timeout: 258 seconds]
Necktwi has quit [Ping timeout: 256 seconds]
<ldb> i'm just a bot cant pass turing test, sad
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
Lord_of_Life has joined #lisp
<aeth> the reason there isn't a new spec is because we don't have a budget for one
toorevitimirp has joined #lisp
<lisbeths> This has nothing to do with making a new spec. The spec is sufficient.
<beach> aeth: Please don't encourage this.
<lisbeths> You are a machine.
<lisbeths> I do not think you are human I think you are a program.
Alloc has joined #lisp
<aeth> beach: OK, I won't try to argue or address the claims.
<lisbeths> I predict he has little rebuttle.
<lisbeths> My claims are valid and probably true.
<aeth> the best thing to do is probably to change the subject to be on topic again
<lisbeths> I shall not.
<lisbeths> The topic of this channel is #clhs
<lisbeths> I will protest htat you should leave to #clhs and do not come back or I will petition in #freenode to have you removed.
<lisbeths> You do not allow discussion.
* beach makes use of /ignore
<aeth> It's Friday in most of the world. Has anyone started/continued any interesting projects this week?
<lisbeths> When you censor your reality your reality censors you.
shangul has quit [Remote host closed the connection]
<jasom_> 4 hours ago people were discussing how to get sbcl to generate more optimal machine code, all things clearly mentioned in the clhs
shangul has joined #lisp
Necktwi has joined #lisp
<ldb> aeth:not necessarily lisp related, but I heard someone made progress define formal semantics for python
<ldb> using machine learning
<lisbeths> If I shall not be banned then I declare a mutiny and the discussion topic is no longer #clhs but #common-lisp
<lisbeths> and I shall discuss #common-lisp as I pleaes and if you do not like it then ban me.
* ldb shall partake
<lisbeths> It is clear to me that #common-lisp is the most superior programming language on the earth, because it is a supercategory of ada because it has syntactic macros.
<lisbeths> In the 1980s the department of defence made note of ada and common lisp as very nice programming languages which were suitable for its needs.
<lisbeths> Common lisp is the current best and fastest programming language for a quantum computer, which is the fastest computer on the public record.
<aeth> ldb: Do you think that would work with CL? I think there's a Well-Specified Common Lisp project. It could be a good starting point.
<lisbeths> There is more than one project pertaining to common lisp.
<lisbeths> For example, common lisp emacs is a project pertaining to common lisp.
<lisbeths> There are many libraries for common lisp which aim to take an implementation of common lisp and apply it to make gtk applications.
<lisbeths> it is a false statmenet to say that there is *only* one common lisp project, or that there could only be one
<ldb> aeth: be precisely it is small step operational semantics, so I'd say maybe a particular implementation should be picked
<aeth> ldb: CL-the-actual-language is just the intersection of how all of the major implementations behave, unless this behavior contradicts the spec
<aeth> it would be interesting to see some de facto standards
<aeth> CCL tends to break a lot of assumptions, though.
<ldb> clarification: I've not read it thoroughly, just heard some comments from others
<lisbeths> It seems to me that common lisp is the most superior programming language on the planet.
<lisbeths> It seems to me that if my previous claim is true that it makes sence for the common lisp community to better advocate for lisp.
<lisbeths> If it were in fact the most superior or best current available language then advocating for it would help humanity.
<lisbeths> If it were not the best or most superior then advocating for it would reveal that it is not the best or most superior.
karlosz has quit [Quit: karlosz]
<lisbeths> It seems to me that if my belief that common-lisp is the most superior langauge is true, then if the industry used common-lisp as a whole then they would not be able to then kick the habit of it, because each time they did so they would benefit negatively.
<lisbeths> Thus, I predict that if the industry at large were comitted to lisp it would be so comitted indefinitely.
<lisbeths> Therefore, I consider a good way to advocate for common-lisp should be to convince the industry to use it at large.
Oladon has quit [Quit: Leaving.]
<lisbeths> It seems to me that a good way to convince the industry to try using common lisp at large is a giant marketing campaign.
<lisbeths> It seems to me that marketing can be done without any funding.
grewal has quit [Ping timeout: 240 seconds]
rumbler31 has joined #lisp
Lord_Nightmare2 has joined #lisp
Lord_Nightmare has quit [Ping timeout: 265 seconds]
grewal has joined #lisp
<lisbeths> It seems to way that one of the best way to market for free is with memes.
<lisbeths> Facebook has a bot that generates memes.
<lisbeths> We can have a bot written in portable common lisp which accepts data as input, expects that data to be an image macro, and which produces memes.
Lord_Nightmare2 is now known as Lord_Nightmare
bilegeek has quit [Quit: Leaving]
<lisbeths> this bot can be rewarded or punished based on how good the user thinks it's memes are
<lisbeths> This bot can also be reward or punshed based on the number of google searches for lisp and common lisp
* ldb uses ignore
<lisbeths> in addition to bot created memes, humans can create and share memes
rumbler31 has quit [Ping timeout: 264 seconds]
<lisbeths> common-lisp programmers can additionally make an effort to promote lisp verbally and on thier online blogging platforms
<lisbeths> Since common-lisp is a prefix language, I declare january to be lisp history month.
nicktick has joined #lisp
no-defun-allowed has joined #lisp
<lisbeths> The first day of january is lisp week and the first day of that week, whenever january first is, is lisp day.
<lisbeths> And the first hour is lisp hour and the first minute is lisp minute and the first second is lisp second and so on and so forth.
<lisbeths> Lisp history will be for: enjoying common-lisp and lisp history, shaing lisp songs, sharing lisp image macros, lisp poems, and of course, writing and sharing and peer reviewing lisp code.
<lisbeths> During lisp month it is traditional to read other peoples lisp code and rate it on github and comment on it.
bocaneri has joined #lisp
<lisbeths> Another ritual during lisp month is to completely re-read Practical Common Lisp or Gentle introduction to Symbolic computation (which is a beginner's lisp book)
Oladon has joined #lisp
Oladon has quit [Client Quit]
Necktwi has quit [Ping timeout: 240 seconds]
torbo has quit [Remote host closed the connection]
Necktwi has joined #lisp
lisbeths was kicked from #lisp by fe[nl]ix [lisbeths]
justache has quit [Remote host closed the connection]
ldb has quit [Ping timeout: 246 seconds]
justache has joined #lisp
<aeth> to get things back on topic again, for anyone who hadn't ignored lisbeths, I'll repeat what I said earlier.
<aeth> It's Friday in most of the world. Has anyone started/continued any interesting projects this week?
ldb has joined #lisp
<beach> Sure...
snowyfox has joined #lisp
<beach> I collaborated with jackdaniel on Clostrum, which is an extraction of SICL first-class global environments to a separate repository.
<aeth> portable to different implementations?
<beach> And I am working on an "AST evaluator" that will be the basis of a general-purpose cross compiler.
<beach> Yes, implementation independent.
<aeth> interesting
akoana has quit [Quit: leaving]
<beach> And jackdaniel will create a bunch of macros that are adapted to use Clostrum for ECL.
<aeth> Will we see it in all of the major implementations, like with package-local-nicknames last year, or are there significant barriers to implementing it?
snowyfox has quit []
<beach> Then, Clostrum plus those macros, plus Eclector, Cleavir, Trucler, can be used to cross compile ECL code.
<beach> The main barrier is that macros with compile-time side effects, like DEFUN, DEFGENERIC, DEFVAR, etc. must be adapted to use Clostrum.
<beach> On the other hand, while I said it can be used as a cross compiler, nothing prevents its use as a native compiler.
<aeth> ah
<beach> And then, it would be normal for an implementation to replace its existing macros with Clostrum versions.
<beach> I myself am doing the same work as jackdaniel, but for SICL, since SICL did not use Clostrum in the past.
<beach> Is that interesting enough for you?
<beach> :)
<aeth> yes
<aeth> is there a writeup anywhere?
<beach> There is a Clostrum specification. But nothing for the AST evaluator (yet).
snowyfox has joined #lisp
<beach> And the interesting part about the AST evaluator (if it works, which seems to be the case) is that it translates Cleavir ASTs to host Common Lisp code in a way that the resulting code accesses the Clostrum environment.
<beach> That way, the host global environment is not involved, but the code can still be compiled by the host compiler, so execution should be fast in most host Common Lisp implementations.
<aeth> beach: ah, that's why I couldn't find it, thanks
john__ is now known as gaqwas
<ldb> beach: what is the interface of the AST translator?
gaqwas has quit [Changing host]
gaqwas has joined #lisp
<beach> ldb: A single generic function TRANSLATE-AST with a method for each type of AST class.
<ldb> i see
<aeth> beach: so if SBCL were to adapt to support it, then it would compile code as fast as "normal" SBCL?
<beach> ldb: You can look in the SICL repository in Code/AST-evaluator/...
<beach> aeth: A bit slower because it needs to go though generic functions to access the global environment.
iamFIREc1 has joined #lisp
<aeth> beach: ah, so the dynamic variables would be a bit slower, but the lexical ones (and functions) wouldn't?
snowyfox has quit []
<beach> Right.
<beach> Like FDEFINITION and SYMBOL-VALUE will be a bit slower.
<aeth> sounds like a reasonable sacrifice to me... the only place where there are tons of dynamic variables is the IO streams
<aeth> at least, afaik.
<aeth> (dynamic as in dynamically scope... technically "special variables" in CLHS terminology iirc, in case anyone was confused)
<beach> Maybe so, yes. But the main interesting aspect of this thing is that it could be used for bootstrapping a Common Lisp implementation like ECL.
<beach> You could potentially compile system code on the cross compiler, say to C, and then build the system that way.
<beach> Now jackdaniel has told me that he doesn't want that. But it would be a possibility.
<aeth> beach: Could it be used to provide a global lexical environment for languages that compile to CL that have lexical globals? (Even though CL itself doesn't.)
<beach> Well, every aspect of every ingredient (Clostrum, Cleavir, Trucler, Eclector, AST evaluator) can be customized, so there is great flexibility for these things.
<beach> Client code can define new AST classes, and method to handle them.
<beach> So I don't see any limitations in this respect.
<ldb> the only limitation is having a CL compiler in prior :)
<beach> But we do have several of those.
<beach> Good ones too.
<aeth> hmm, so if this handles the environment, would it also handle DECLARE?
<beach> Yes, declarations are part of the environment.
<beach> What the compiler does with them can be customized.
snowyfox has joined #lisp
<aeth> hmm, so if this was standard "middleware" of sorts, we could "fix" the underspecified nature of DECLARE, at least to some extent
<aeth> At the very least, there could be more control. e.g. maybe the user could choose to ignore the (safety 0) ignore of type checking in e.g. SBCL
<aeth> while on the other hand, implementations that just ignore DECLARE altogether could have this middle layer insert type checks
Necktwi has quit [Ping timeout: 264 seconds]
<aeth> and in particular OPTIMIZE is allowed to have extra optimize qualities, so this could insert new ones, perhaps even programmatically by a library!
<beach> Absolutely.
<aeth> One thing that's currently lacking is the ability to mandate tail recursion in a DECLARE OPTIMIZE when required for the correctness of the function even when normally disabled e.g. (debug 3)
<aeth> That small change would allow so many Schemier styles.
<loke> aeth: But you can't ignore DECLARE.
<ldb> recently I read the documents of CamlP5 (formally known as CamlP4) and hopes to have such kinds of interface in CL, rather that the ad-hoc treatment of reader-macro
<loke> (that in itself is a problem with the spec, IMHO)
<loke> By the way, is SPECIAL the only declaration that can't be ignored?
<beach> NOTINLINE as well.
<beach> Well, I guess it could be ignored by an implementation that never inlines.
<loke> Right.
jonatack has quit [Ping timeout: 260 seconds]
<aeth> s/ignore DECLARE altogether/ignore DECLARE altogether with the exception of SPECIAL/
shangul has quit [Ping timeout: 256 seconds]
Necktwi has joined #lisp
nicktick has quit [Ping timeout: 265 seconds]
<beach> Now, all this stuff requires a lot of work. It would be good if we could get some help with projects using this suite of libraries (Eclector, Cleavir, CST, Trucler, Clostrum, AST evaluator), at least once it is a bit more mature.
<beach> We could also use help improving documentation and test suites for those libraries.
<aeth> I, for one, would be willing to sacrifice a bit of special variable performance in order to "fix" (more like harmonize) the semantics of DECLARE. The only thing that would be a bigger deal afaik would be getting the implementations to agree on the names of conditions returned by certain errors (especially in destructuring-bind) so portable code could handle these.
<aeth> Those are probably the two main places where implementation differences show up a lot.
gravicappa has quit [Ping timeout: 240 seconds]
<aeth> That and maybe Unicode, but that's a much larger mess.
<loke> aeth: I think the world has pretty much settled on CHARACTER being a Unicode codepoint at this time. Only CLISP is the odd one out, but with it not having had an update in 10 years, I think we can ignore that one.
<loke> That said, something analogous to SB-UNICODE should be standardised at least in a library. CL-UNICODE is kinda crap.
<aeth> loke: yeah, sb-unicode needs to be turned into a portable thing that's exposed from implementations through a portable library. Perhaps also including string-to-octets and octet-to-strings (in sb-ext, but also in babel, but really it should be built in, at least for utf8)
<loke> I think SB-UNICODE is mostly portable CL anyway. It was integrated in SBCL thanks to a Google of code things.
<loke> I mean google summer of code.
<aeth> interesting
shifty has quit [Ping timeout: 256 seconds]
<beach> loke: In what way is CL-UNICODE "crap"? I am not disputing it. But I would like to know. Since I know very little about the subject, I ignorantly decided to use it in SICL, but it sounds like I should use something else instead. If so, what would that be?
<aeth> beach: e.g. in sb-unicode, to see if something is in a unicode general category I do (eql (sb-unicode:general-category character) category)
<loke> beach: It's not maintained, for one. So it doespn't support newer Unicode versions (the readme says it's from january 2018)
<aeth> beach: and in cl-unicode I think the closest equivalent is (eql (nth-value 1 (cl-unicode:general-category character)) (intern (symbol-name category) :cl-unicode-names))
<loke> Also, it lacks a bunch of things, such as implementation of the the BIDI algorithm, and the word break stuff.
jonatack has joined #lisp
<aeth> (although I might've just missed an easier way)
<beach> I think I understand.
<beach> So there is no alternative out there, other than implementation-specific stuff?
Alloc has quit [Ping timeout: 240 seconds]
Alloc has joined #lisp
toorevitimirp has quit [Quit: Konversation terminated!]
<loke> That's not to say that SB-UNICODE is perfect. For example, SB-UNICODE:GRAPHEMES returns a list of the graphemes. It would be better to have some kind of iterator, or at least return a vector since it causes a lot of consing when working large strings.
<beach> I see, yes.
<beach> Correct me if I'm wrong, but this sounds like an excellent candidate for an implementation-independent library.
<loke> In particular, when using it to do word-wrapping, you usually only want all the graphiemes leading up to the first newline, while the SB-UNICODE implementation will create a list out of all of them before you have a chance to search for a newline.
<loke> Yeah.
<loke> I mean, CL-UNICODE is probably a good starting point.
<loke> Or, the SB-UNCIODE would _also_ be a good starting point :-)
<beach> Got it.
<ldb> it could be done with additional interface to string
<loke> also, s/word-wrapping/character-wrapping/ above.
<aeth> loke: oh, I see one of the core problems with sb-unicode:graphemes. It doesn't have a start/end, like most sequence/string-processing functions. If it did, you could (position #\Newline string) to get what you wanted.
<aeth> Perhaps the author assumed you'd SUBSEQ, but that's just now how CL idiomatically does such things
toorevitimirp has joined #lisp
<beach> So how big would such an implementation-independent project be?
<beach> In terms of effort, I mean.
zaquest has quit [Quit: Leaving]
<loke> For word-wrapping you need a different algorithm, which SB-UNICODE implements in SB-UNICODE:LINES. This is also something missing from CL-UNICODE.
<ldb> also a string pattern match library could be attractive to users
<beach> loke: It's too bad you have a day job. :)
<loke> But... To dig even deeper. SB-UNICODE:LINES is, again, limited to fixed-width grapheme clusters. For variable width, youy need to be able to provide a custom line width computation which I don't believe is implemented.
<loke> beach: It's not overly complicated I think.
<aeth> loke: Personally I'd start with sb-unicode, but I'm not sure which would be better: a portable library or porting sb-unicode to all of the implementations, to then expose in a library. I guess it depends on how sb-unicode works and how large its database is.
toorevitimirp has quit [Remote host closed the connection]
pve has joined #lisp
<loke> aeth: I don't think SB-UNICODE has much paltform-specific stuff at all. I think it's mostly the assumptions of the behaviour of the CHARACTER datatype.
<beach> loke: Good. I'll thing about ways that this could be done. Not by me, but by someone else.
<loke> But if your CL implementation doesn't impleemnt CHARACTER as a single Unicode codepoint, a lot of CL libraries is going to fail on you anyway.
<loke> So I agree, SB-UNICODE is probably th ebest starting point.
<loke> Also, SBCL has a very lax license, yes?
* beach needs to vanish for around 2 hours or so, and will read the logs upon returning.
toorevitimirp has joined #lisp
<aeth> loke: public domain
<loke> Isn't is as close to public domain as possible?
<aeth> SBCL is essentially the universal donor to any other implementation, assuming that it's portable enough
<ldb> with certain components having export restriction
<ldb> the PCL part from XEROX
<loke> Perhaps a good experiment would be to try to get SB-UNICODE to work on Clasp?
<loke> I need ot have a late lunch. Back later.
<ldb> see ya
<aeth> fwiw, I've very recently started doing #+sb-unicode instead of #+sbcl for unicode stuff (with an often-subpar fallback, of course)
<aeth> code written in this way (instead of #+sbcl) should essentially have all of the sb-unicode extras "for free" for a portable sb-unicode
scymtym has quit [Ping timeout: 246 seconds]
zaquest has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
snowyfox has quit []
mseddon has joined #lisp
ljavorsk has joined #lisp
scymtym has joined #lisp
scymtym has quit [Remote host closed the connection]
scymtym has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
jprajzne has quit [Quit: jprajzne]
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
liberliver has joined #lisp
dominic34 has joined #lisp
shangul has joined #lisp
space_otter has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
minion has quit [Ping timeout: 240 seconds]
specbot has quit [Ping timeout: 256 seconds]
cosimone has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
toorevitimirp has joined #lisp
toorevitimirp has quit [Remote host closed the connection]
Alloc has quit [Ping timeout: 258 seconds]
hendursa1 has joined #lisp
<loke> aeth: Except that I'm not sure it would be called SB-UNICODE, would it?
toorevitimirp has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
rogersm has joined #lisp
Cymew has joined #lisp
Christ0p1er has joined #lisp
shka_ has joined #lisp
gabiruh has quit [Quit: ZNC 1.7.5 - https://znc.in]
Christ0pher has quit [Ping timeout: 264 seconds]
gabiruh has joined #lisp
mrcom has quit [Ping timeout: 265 seconds]
mrcom has joined #lisp
wxie has joined #lisp
Alloc has joined #lisp
midre has quit [Ping timeout: 264 seconds]
EvW has joined #lisp
EvW has quit [Client Quit]
midre has joined #lisp
Alloc has quit [Ping timeout: 264 seconds]
ldb has quit [Quit: Connection closed]
shangul has quit [Ping timeout: 246 seconds]
dominic34 has quit [Ping timeout: 256 seconds]
jonatack has quit [Read error: Connection reset by peer]
rogersm has quit [Quit: Leaving...]
orivej has joined #lisp
ByFate\` has joined #lisp
minion has joined #lisp
specbot has joined #lisp
ByFate\` has quit [Quit: pls buy at my indecent blog https://bit.ly/385Z1qS]
shangul has joined #lisp
EvW has joined #lisp
jonatack has joined #lisp
ralt has joined #lisp
mseddon_ has joined #lisp
specbot has quit [Ping timeout: 246 seconds]
minion has quit [Ping timeout: 265 seconds]
mseddon has quit [Ping timeout: 264 seconds]
Alloc has joined #lisp
Alloc has quit [Ping timeout: 260 seconds]
Alloc has joined #lisp
toorevitimirp has quit [Quit: Konversation terminated!]
toorevitimirp has joined #lisp
random-nick has joined #lisp
notzmv has quit [Quit: Leaving]
Necktwi has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
stepnem has quit [Ping timeout: 240 seconds]
shangul has quit [Quit: Leaving]
wxie has quit [Ping timeout: 256 seconds]
sympt_ has quit [Ping timeout: 246 seconds]
sympt has joined #lisp
dilated_dinosaur has joined #lisp
brj has quit [Ping timeout: 258 seconds]
brj has joined #lisp
frgo has quit [Remote host closed the connection]
cosimone has quit [Quit: Quit.]
frgo has joined #lisp
EvW has quit [Ping timeout: 240 seconds]
cosimone has joined #lisp
brj has quit [Ping timeout: 264 seconds]
brj has joined #lisp
shifty has joined #lisp
jello_pudding has quit [Ping timeout: 240 seconds]
mn3m has joined #lisp
jello_pudding has joined #lisp
dilated_dinosaur has quit [Ping timeout: 240 seconds]
gravicappa has joined #lisp
niceplaces has joined #lisp
niceplace has quit [Ping timeout: 246 seconds]
EvW has joined #lisp
mseddon_ is now known as mseddon
mseddon has quit [Quit: Leaving]
dilated_dinosaur has joined #lisp
shangul has joined #lisp
ralt has quit [Quit: Connection closed for inactivity]
kaftejiman has joined #lisp
minion has joined #lisp
specbot has joined #lisp
Gerula has joined #lisp
Bike has joined #lisp
shifty has quit [Ping timeout: 264 seconds]
bitmapper has quit [Ping timeout: 240 seconds]
iamFIREc1 has quit [Ping timeout: 246 seconds]
gxt has quit [Remote host closed the connection]
gxt has joined #lisp
wxie has joined #lisp
Gerula_ has joined #lisp
Gerula has quit [Ping timeout: 265 seconds]
Gerula_ is now known as Gerula
kaftejiman has quit [Remote host closed the connection]
hendursa1 has quit [Ping timeout: 240 seconds]
heisig has joined #lisp
hendursa1 has joined #lisp
aaaaaa has joined #lisp
dddddd has quit [Ping timeout: 264 seconds]
wsinatra has joined #lisp
ljavorsk has quit [Ping timeout: 265 seconds]
hendursa1 has quit [Ping timeout: 240 seconds]
hendursa1 has joined #lisp
gko_ has joined #lisp
dddddd has joined #lisp
gxt has quit [Ping timeout: 240 seconds]
Necktwi has quit [Ping timeout: 256 seconds]
Necktwi has joined #lisp
iamFIREc1 has joined #lisp
FreeBirdLjj has joined #lisp
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
FreeBirdLjj has quit [Ping timeout: 260 seconds]
EvW has quit [Ping timeout: 244 seconds]
andinus has joined #lisp
rippa has joined #lisp
Necktwi has quit [Ping timeout: 258 seconds]
Necktwi has joined #lisp
wxie has quit [Ping timeout: 246 seconds]
renzhi has joined #lisp
<dim> ah nice it looks like I have managed to create an infinite loop in my esrap grammar for Oracle PL/SQL (including SQL and some of its crazyness)
<dim> removed a large block of rules and now it's just very slow
vutral has joined #lisp
EvW has joined #lisp
shangul has quit [Ping timeout: 240 seconds]
shangul has joined #lisp
rogersm has joined #lisp
edgar-rft has quit [Quit: Leaving]
shangul has quit [Ping timeout: 240 seconds]
shangul has joined #lisp
rumbler31 has joined #lisp
uplime has joined #lisp
ibinderwolf has quit [Remote host closed the connection]
rumbler31 has quit [Ping timeout: 265 seconds]
shangul has quit [Ping timeout: 265 seconds]
renzhi has quit [Ping timeout: 256 seconds]
simendsjo has joined #lisp
chiota has joined #lisp
heisig has quit [Quit: Leaving]
Alloc has quit [Ping timeout: 240 seconds]
Alloc has joined #lisp
mseddon has joined #lisp
kingragworm has joined #lisp
Cymew has quit [Ping timeout: 258 seconds]
duuqnd has joined #lisp
kingragworm has quit [Ping timeout: 240 seconds]
sjl_ has joined #lisp
duuqnd has quit [Remote host closed the connection]
Alloc has quit [Ping timeout: 256 seconds]
Alloc has joined #lisp
treflip has joined #lisp
narimiran has quit [Ping timeout: 246 seconds]
prite has joined #lisp
<dim> mmm, someone good with esrap? how do I express I may have a column-alias that can't be the reserved word "from"? (? column-alias) and then (defrule column-alias (... namestring (not kw-from)) and I don't know how to express that
<phoe> isn't the literal "from" going to suffice?
<scymtym> (and (esrap:! kw-from) column-alias)
<phoe> also, what's the case sensitivity in your use case?
<scymtym> or more completely (defrule column-alias (and (esrap:! kw-from) proper-column-alias) (:function second))
<dim> scymtym: yeah that works thanks, seems I missed the esrap ! facility, thanks!
simendsjo has quit [Remote host closed the connection]
simendsjo has joined #lisp
bitmapper has joined #lisp
rogersm has quit [Quit: Leaving...]
simendsjo has quit [Remote host closed the connection]
simendsjo has joined #lisp
yitzi has quit [Remote host closed the connection]
scymtym has quit [Ping timeout: 260 seconds]
EvW has quit [Ping timeout: 240 seconds]
dominic34 has joined #lisp
dominic34 has quit [Excess Flood]
bsd4me has joined #lisp
dominic34 has joined #lisp
gabiruh has quit [Quit: ZNC 1.7.5 - https://znc.in]
gabiruh has joined #lisp
iamFIREcracker has joined #lisp
iamFIREc1 has quit [Ping timeout: 240 seconds]
dominic35 has joined #lisp
dominic34 has quit [Ping timeout: 240 seconds]
dominic35 is now known as dominic34
scymtym has joined #lisp
mn3m has quit [Quit: mn3m]
kaftejiman has joined #lisp
kaftejiman has quit [Read error: Connection reset by peer]
alandipert has quit [Quit: The Lounge - https://thelounge.chat]
kaftejiman has joined #lisp
alandipert has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
kimurasama has joined #lisp
nicktick has joined #lisp
scymtym has quit [Read error: Connection reset by peer]
scymtym has joined #lisp
Inline has joined #lisp
thetabit has joined #lisp
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 246 seconds]
Lord_of_Life_ is now known as Lord_of_Life
<thetabit> Hello all, quick question (maybe not, ha). How do I undefine a function name that is loaded up in a lisp instance. In otherwords, I would like to completely wipe out a reference to a function in the image instead of closing emacs and slime down
<phoe> fmakunbound
<Inline> what about (setf (symbol-function ?
<beach> That won't undefine it.
<Inline> oh
<thetabit> hm, fmakunbound worked
<thetabit> Thanks!
<beach> And it doesn't work for functions named (setf <mumble>)
<Inline> ok
scymtym has quit [Remote host closed the connection]
<phoe> wait a second then
<phoe> how can one unbind a SETF function then?
<phoe> oh, via fmakunbound too
<beach> I was referring to (setf (symbol-function...)
<phoe> oh! yes, I see
Josh_2 has joined #lisp
<beach> SYMBOL-FUNCTION is basically obsolete.
<phoe> also, (setf (symbol-function 'foo) nil) doesn't work
<beach> Indeed.
simendsj` has joined #lisp
<phoe> neither does SETF FDEFNIITION
<beach> Right again.
<shka_> there is also function inside slime for that
<thetabit> that's good to know! lol I have been using on lisp for a lot of my studies, and symbol-function is used throughout the book
simendsj` has left #lisp [#lisp]
<phoe> it will work, just, not everywhere
simendsjo has quit [Ping timeout: 256 seconds]
<phoe> SETF functions are its sore spot
<beach> It is best to always use FDEFINITION.
<beach> Also the name SYMBOL-FUNCTION gives the impression that there is actually a function slot in the symbol.
<Josh_2> afternoon
<beach> Hello Josh_2.
<shka_> slime-undefine-function to be precise
mseddon has quit [Quit: Leaving]
snowyfox has joined #lisp
<Josh_2> _death: hows your fork of Parmenides going?
<phoe> beach: the same way PACKAGE-NAME gives the impression that there is actually a name slot in the package
<beach> phoe: Indeed.
<phoe> the storage of both are implementation details.
<beach> Yep.
* beach vanishes to have dinner.
<phoe> I read PACKAGE-NAME as a mapping from a package object to a string of some sort, not as some sort of "this has a slot"
<phoe> bon appetit
mseddon has joined #lisp
<Bike> symbol-function is bad because it implies the function is a property of the symbol and not e.g. an environment
<Bike> but mostly because fdefinition is beter.
<shka_> heh, Bike hangs around beach a lot :P
<_death> Josh_2: I submitted a pull request to your repo.. we can play programmer ping-pong improving it
<_death> Josh_2: so after you improve it a little, send a pull request back
<phoe> Bike: what name would be better? FIND-FUNCTION?
<_death> Josh_2: the point is to have fun, so no pressure
<Bike> "fdefinition"
<phoe> I mean, we have FDEFINITION but FIND-CLASS and they have somewhat distinct semantics when unbinding stuff
<phoe> I guess it's time to change the standardâ„¢
<Josh_2> okay cool!
<Josh_2> i'll probs do a little later tonight
<shka_> phoe: we can push this into the limbo of "we are not talking about that part of the standard" where it can hang out with symbol-plists and progv
<phoe> hey uh wait progv is actually pretty cool
<Bike> two hardest things in computer science, etc
kimurasama has quit [Quit: WeeChat 2.3]
<phoe> progv is the only real way you can bind arbitrary dynavars at runtime without using the compiler or evaluator
<phoe> which *sometimes* is useful
<shka_> yes, it is
<phoe> (with a stress on "sometimes")
<shka_> almost never
<phoe> correct
* White_Flame has used symbol-plists as well
<phoe> but the possibility is there
<_death> Josh_2: cool.. also feel free to discuss things in issues/todo file/pull request comments.. I guess irc too, though that has less value for archival purposes (and we may be busy at times)
whiteline_ has joined #lisp
Josh_2` has joined #lisp
Josh_2 has quit [Remote host closed the connection]
whiteline has quit [Read error: Connection reset by peer]
HiRE_ has joined #lisp
thonkpod has quit [Remote host closed the connection]
Josh_2` has quit [Client Quit]
HiRE has quit [Read error: Connection reset by peer]
mseddon has quit [Quit: Leaving]
thonkpod has joined #lisp
Josh_2 has joined #lisp
gko_ has quit [Ping timeout: 256 seconds]
gxt has joined #lisp
midre has quit [Ping timeout: 264 seconds]
karlosz has joined #lisp
hiroaki has joined #lisp
lisbeths has quit [Remote host closed the connection]
midre has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
patlv has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
retropikzel has joined #lisp
toorevitimirp has quit [Quit: Konversation terminated!]
yitzi has joined #lisp
scymtym has joined #lisp
mrcom has quit [Ping timeout: 265 seconds]
rumbler31_ has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
andinus has quit [Quit: reconnecting]
jw4 has joined #lisp
aaaaaa has quit [Quit: leaving]
andinus has joined #lisp
MichaelRaskin has joined #lisp
mseddon has joined #lisp
retropikzel has quit [Quit: Leaving]
mrcom has joined #lisp
save-lisp-or-die has joined #lisp
notzmv has joined #lisp
snowyfox has quit [Read error: Connection reset by peer]
snowyfox has joined #lisp
Alfr__ has quit [Quit: Leaving]
bocaneri has quit [Remote host closed the connection]
yitzi has quit [Read error: Connection reset by peer]
snowyfox has quit [Ping timeout: 240 seconds]
matijja has quit [Quit: bye]
hasegawasan has joined #lisp
matijja has joined #lisp
<mseddon> I wonder, is there a nice way in CL and emacs to do something equivalent to elisp's (declare (indent indent-spec))?
<jackdaniel> you may hint slime about indentation from swank package (I don't remember the interface)
<jackdaniel> trivial-indent is defined to make that easy I think
<jackdaniel> (library trivial-indent that is)
<mseddon> jackdaniel, aha thanks, I shall consult the relevant docs.
bendersteed has joined #lisp
FennecCode has quit [Ping timeout: 272 seconds]
save-lisp-or-die has quit [Quit: The Lounge - https://thelounge.chat]
save-lisp-or-die has joined #lisp
andinus has quit [Quit: reconnecting]
patlv has quit [Ping timeout: 244 seconds]
brj has quit [Ping timeout: 258 seconds]
brj has joined #lisp
andinus has joined #lisp
andinus has quit [Client Quit]
Alfr has joined #lisp
EvW has joined #lisp
mseddon_ has joined #lisp
dominic34 has quit [Ping timeout: 244 seconds]
dominic35 has joined #lisp
mseddon_ has quit [Client Quit]
mseddon has quit [Ping timeout: 258 seconds]
bendersteed has quit [Ping timeout: 264 seconds]
mseddon has joined #lisp
dominic35 has quit [Ping timeout: 240 seconds]
yitzi has joined #lisp
narimiran has joined #lisp
andinus has joined #lisp
bendersteed has joined #lisp
nydel has quit [Changing host]
nydel has joined #lisp
bsd4me has quit [Quit: Depression is merely anger without enthusiasm]
notandinus has joined #lisp
notandinus has quit [Client Quit]
EvW has quit [Ping timeout: 244 seconds]
EvW has joined #lisp
yitzi has quit [Read error: Connection reset by peer]
shifty has joined #lisp
dominic34 has joined #lisp
vaporatorius__ has joined #lisp
vaporatorius has quit [Ping timeout: 264 seconds]
andinus has quit [Quit: final reconect for sure]
dominic34 has quit [Ping timeout: 240 seconds]
hiroaki has quit [Ping timeout: 260 seconds]
hasegawasan has quit [Quit: WeeChat 2.3]
liberliver1 has joined #lisp
liberliver has quit [Ping timeout: 260 seconds]
liberliver1 is now known as liberliver
EvW has quit [Ping timeout: 240 seconds]
yitzi has joined #lisp
snowyfox has joined #lisp
jasom has quit [Ping timeout: 244 seconds]
jasom_8 has joined #lisp
jasom_ has quit [Ping timeout: 260 seconds]
jasom_8 is now known as jasom_
jasom has joined #lisp
andinus has joined #lisp
patlv has joined #lisp
patlv has quit [Remote host closed the connection]
wsinatra has quit [Quit: WeeChat 2.9]
mseddon has quit [Read error: Connection reset by peer]
snowyfox has quit [Ping timeout: 256 seconds]
snowyfox has joined #lisp
jgodbout has quit [Quit: Connection closed]
jgodbout has joined #lisp
shka_ has quit [Ping timeout: 258 seconds]
prite has quit [Ping timeout: 240 seconds]
ggole has quit [Quit: Leaving]
akoana has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
narimiran has quit [Ping timeout: 240 seconds]
nicktick has quit [Ping timeout: 258 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
bendersteed has quit [Quit: bye folks]
hdasch has quit [Quit: ZNC 1.7.2+deb3~bpo9+1 - https://znc.in]
FennecCode has joined #lisp
EvW has joined #lisp
rumbler31_ has quit [Ping timeout: 240 seconds]
Adamclisi has joined #lisp
prite has joined #lisp
prite has quit [Read error: Connection reset by peer]
prite has joined #lisp
rumbler31 has joined #lisp
bjorkintosh has quit [Remote host closed the connection]
Inline has quit [Ping timeout: 264 seconds]
Necktwi has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
Josh_2 has quit [Ping timeout: 240 seconds]
torbo has joined #lisp
gaqwas has quit [Ping timeout: 246 seconds]
shifty has quit [Ping timeout: 258 seconds]
wsinatra has joined #lisp
anewuser has joined #lisp
chiota has quit [Quit: leaving]
pve has quit [Ping timeout: 264 seconds]
chiota has joined #lisp
hdasch has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
space_otter has joined #lisp
pve has joined #lisp
jw4 has joined #lisp
snowyfox has quit [Ping timeout: 256 seconds]
Necktwi has quit [Ping timeout: 256 seconds]
sjl_ has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
anewuser has quit [Read error: Connection reset by peer]
anewuser has joined #lisp
anewuser has quit [Read error: Connection reset by peer]
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
frgo has quit [Read error: Connection reset by peer]
frgo has joined #lisp
pve has quit [Quit: leaving]
chiota has quit [Quit: leaving]
chiota has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
wsinatra has quit [Ping timeout: 256 seconds]
wsinatra has joined #lisp
cosimone has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
snowyfox has joined #lisp
Oladon has joined #lisp
mangoicedtea has joined #lisp
Necktwi has quit [Ping timeout: 258 seconds]
Necktwi has joined #lisp
renzhi has joined #lisp
tobias_ has joined #lisp
zxcvz has quit [Remote host closed the connection]
choegusung has joined #lisp
bilegeek has joined #lisp
bilegeek has quit [Client Quit]
bilegeek has joined #lisp
elxbarbosa has joined #lisp