phoe changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.16, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
jack_rabbit has joined #lisp
Lord_of_Life_ has joined #lisp
gilberth has quit [Ping timeout: 264 seconds]
Lord_of_Life has quit [Ping timeout: 250 seconds]
Lord_of_Life_ is now known as Lord_of_Life
LiamH has quit [Quit: Leaving.]
sjl has quit [Quit: WeeChat 2.2-dev]
Essadon has quit [Quit: Qutting]
gilberth has joined #lisp
atgreen has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
<ym> How do I check if given expression is a type specifier?
<Bike> no reliable way to do that
<ym> Nice.
<Bike> why do you want to?
<ym> Just curious. Can't imaging when it could be useful.
<Bike> i see.
<ym> For example, I have a class with array-slot and type of elements of this slot may be set with initialization or may be derived wile initialization. Then I want to have a slot containing a type which was set with make-instance.
<ym> I can have a 1-element array just to hold the type, but it seems kludgely
robdog has joined #lisp
<gilberth> A very bold way, would be: (defun my-type-specifier-p (type) (not (nth-value 1 (ignore-errors (typep nil type)))))
<gilberth> CCL has ccl:type-specifier-p alread thus I named my function my-type-specifier-p.
<Bike> typep has undefined effects if you don't give it a type specifier. it might not signal an error.
<gilberth> Sure.
Josh_2 has joined #lisp
Achylles has quit [Ping timeout: 258 seconds]
robdog has quit [Ping timeout: 264 seconds]
stevencc has joined #lisp
anewuser has joined #lisp
<stevencc> what's wrong with "Unexpected HTTP status" when i run (ql:quickload 'repl-utilities)? anyone can help me?
<actuallybatman> stevencc: works on my machine™
<actuallybatman> maybe it's network instability, or a bad firewall...
<stevencc> but in the past, I could run this program correctly.
<stevencc> It works in browsers when i download the package
<actuallybatman> do you know what the status was?
<stevencc> the status is 403
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
<actuallybatman> forbidden! :o
<actuallybatman> yeah, I've never had the quicklisp client give me that.
smasta has quit [Ping timeout: 258 seconds]
robdog has joined #lisp
<stevencc> yes, I'm also depressed
smasta has joined #lisp
ober has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
smasta has quit [Ping timeout: 240 seconds]
robdog_ has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
zigpaw has quit [Remote host closed the connection]
anewuser has quit [Ping timeout: 258 seconds]
<XachX> stevencc: likely a proxy
robdog has joined #lisp
datajerk_ has quit [Ping timeout: 246 seconds]
robdog has quit [Ping timeout: 264 seconds]
datajerk has joined #lisp
orivej has joined #lisp
robdog has joined #lisp
moldybits has quit [Read error: Connection reset by peer]
dale has quit [Quit: dale]
robdog has quit [Ping timeout: 250 seconds]
makomo has quit [Ping timeout: 240 seconds]
robdog has joined #lisp
smasta has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
smasta has quit [Ping timeout: 246 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
iovec has joined #lisp
keep_learning_M has joined #lisp
keep_learning has joined #lisp
keep_learning has quit [Client Quit]
moldybits has joined #lisp
akoana has left #lisp ["Leaving"]
moldybits has quit [Ping timeout: 246 seconds]
keep_learning has joined #lisp
<Ukari> would it hurt the performance if I use a :include option in (defstruct (bar (:include foo))) to make "bar" as the nickname to export in package instead of "foo"?
robdog has joined #lisp
igemnace has joined #lisp
<loke> Ukari: No
robdog has quit [Ping timeout: 264 seconds]
<LdBeth> Good evening
<Josh_2> 3am here
robdog has joined #lisp
<loke> 11 here
robdog has quit [Ping timeout: 264 seconds]
<verisimilitude> The real answer is probably not, but maybe, Ukari.
Oladon has joined #lisp
terpri_ has quit [Ping timeout: 244 seconds]
xristos has quit [Quit: ZNC - http://znc.in]
xristos has joined #lisp
kuber has joined #lisp
igemnace has quit [Quit: WeeChat 2.4]
igemnace has joined #lisp
sjl has joined #lisp
dale has joined #lisp
emaczen has joined #lisp
marvin2 has quit [Ping timeout: 246 seconds]
kuber has quit [Quit: leaving]
Oladon has quit [Quit: Leaving.]
<beach> Good morning everyone!
<beach> gilberth: Hey, good to see you.
Bike has quit [Quit: leaving]
<emaczen> morning beach
Josh_2 has quit [Ping timeout: 268 seconds]
meepdeew has joined #lisp
<emaczen> eschatologist: Can you elaborate on what code should be called from the main thread and what code should not?
meepdeew has quit [Ping timeout: 255 seconds]
ltriant has quit [Quit: leaving]
wanz has joined #lisp
<gilberth> beach: I am at sleep. Good to see you too.
robdog has joined #lisp
<beach> Bah, I am here all the time. :)
<beach> gilberth: What are you working on these days?
<beach> with respect to Common Lisp, I mean.
<gilberth> Not all the time, when I am awak, you sleep, when I sleep you are awake. Seems like we do not share a common time zone ;-)
<beach> Heh.
<gilberth> But, yes. I figure that the last key, I will ever type will be the ")" key. You need to close your parens after all.
<beach> Indeed.
<beach> So when are you going to help me with SICL? :)
<gilberth> Ask me in two years or so. I am currently into implementing an electrial CAD application, which will be cloud-based and a web application. So I am more into JS right now. But I figure, that JS would seriously need an SEXP-based syntax.
robdog has quit [Ping timeout: 264 seconds]
<beach> Oh, is this paid work? If so, that's great!
<gilberth> Na, this is not paid. I pay myself. Perhaps I could make some money from that, who knows?
* beach puts a note in his calendar for February 22 2021.
<gilberth> LOL, sorry.
<beach> Ah, OK.
robdog has joined #lisp
<gilberth> Seriously, I want Common Lisp special forms for JavaScript. Like, you don't care if a GO (sic!) is non-local or not. And I miss the parens.
<beach> So why are you doing this rather than doing Common Lisp?
varjag has joined #lisp
<gilberth> And macros! I get withdrawal symptoms.
<beach> I sympathize.
ym555 has quit [Ping timeout: 246 seconds]
<gilberth> I am still pretty much into Common Lisp. There is a pile of projects waiting to be published, but I still suffer from my illness.
<beach> I see.
robdog has quit [Ping timeout: 264 seconds]
<beach> gilberth: I have decided to take some time to split off "modules" of SICL into independent libraries.
<beach> I am working on the environment protocol at the moment: http://metamodular.com/trucler.pdf
<gilberth> But then, I wanted to have a good electrical CAD system for more then ten years. Currently a pet project of mine is to build a 32-bit RISC CPU from 74xx devices, so I have use for that. And a modern cloud-based E-Cad system would perhaps be something to make money with.
<beach> Next, I think I'll attack the implementation-customizable lambda-list parser.
<beach> I see, yes.
<gilberth> lambda-list parsing is "fun". There are so many variations of lambda lists in the CL spec.
varjag has quit [Ping timeout: 255 seconds]
<beach> Plus, the standard allows for implementation-specific extensions.
<beach> I found a solution using Earley parsing.
<gilberth> OK.
<beach> I am hoping to be able to generate better error messages that way.
<gilberth> You love Earley parser, don't you?
<beach> I think it's a technique that is not considered often enough.
<beach> My code is working, but the error reporting is skimpy at the moment.
<gilberth> I have a verstile lambda-list parser. But it is written in a very traditional way.
<beach> I see.
<beach> Well, we know have another constraint to take into account.
<beach> We use CSTs rather than S-expressions as input.
<gilberth> Sorry. What is "CST"?
<beach> ... Concrete Syntax Trees, to preserve source information.
<gilberth> I see. Does it solve the problem that you usually cannot name the exact position of an atom?
<beach> Yeah.
<beach> It's basically S-expressions wrapped in standard objects with source information.
<gilberth> Fine. But what about macros? The macros expect S-expressions.
<beach> Glad you asked... :)
nanoz has joined #lisp
<beach> We take the "raw" S-expression from the CST, run it through the macro expander, then reconstruct a CST by looking for expressions in the expansion.
slyrus_ has quit [Quit: Leaving]
<gilberth> This sounds like guessing.
<beach> It is.
ggole has joined #lisp
<beach> But scymtym has plans for a special macro-expansion evaluator that uses CSTs throughout.
meepdeew has joined #lisp
<gilberth> Had you any luck to parse the dpANS spec? I was contemplating for some time to offer an annotatable ANSI spec.
<beach> I have not attempted to pars it.
<beach> parse
<beach> I have attempted to make a single LaTeX document out of the separate ones, but it's a mess.
<beach> I need the annotatable one for WSCL.
<gilberth> The mess is: It is not really LaTex.
<beach> Yeah.
<gilberth> And a million custom macros.
<beach> I know. :(
<beach> https://github.com/robert-strandh/Well-Specified-Common-Lisp in case you don't know about WSCL.
robdog has joined #lisp
<beach> In case you are interested, some of us hang out in #sicl where I can intervene more freely without risking to be kicked for off-topic stuff.
meepdeew has quit [Ping timeout: 244 seconds]
<gilberth> OK. You want to make dpANS editible, if I get this right by just having a glimse?
<gilberth> Na, #lisp is no traffic enough --- nobody will complain.
<gilberth> low, even.
<beach> Yeah, my plan is to turn it into a single LaTeX document, then start editing it while preserving the old text as footnotes or appendices.
robdog has quit [Ping timeout: 264 seconds]
<beach> gilberth: Great progress is being made. A significant number of people are making good progress on McCLIM. Bike is working on the Cleavir compiler framework. heisig is doing the SICL sequence functions and more. And scymtym is doing lots of library stuff disguised as work on a very powerful IDE for Common Lisp.
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
v0|d has quit [Ping timeout: 246 seconds]
malice` has joined #lisp
<malice`> Is there some grammar or other definition of possible CL's symbol names? regex would be awesome
<fiddlerwoaroof> malice`: I don't think so, I think any string can be a symbol name
<minion> fiddlerwoaroof, memo from emaczen: I briefly looked at NSException.h which has the macro definitions for exception handling, and it looked to me that all you have to do is just translate the macro definition into lisp
<minion> fiddlerwoaroof, memo from emaczen: the translation entails defining the C struct for an execption and some function calls
<fiddlerwoaroof> malice`: I don't think so, any string can be a symbol name
meepdeew has joined #lisp
<no-defun-allowed> malice`: any string can be a SYMBOL-NAME, but the printed form is a little different, lemme see
meepdeew has quit [Ping timeout: 255 seconds]
<no-defun-allowed> god dammit matrix you pile of shite, malice`: ^^
robdog has joined #lisp
<no-defun-allowed> hmm, not sure where to find that in CLHS sorry
<ThomasLewis[m]> It's on pp 133-134 of ANSI Common Lisp.
milivoj has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
dale has quit [Quit: dale]
<akater> Bike: why *wouldn't* one want to be able to classify objects at hand, including type specifiers? Class introspection (i.e., MOP) is useful, shouldn't type introspection be useful as well?
<akater> I don't have a good use case example but I prefer declaring types, and for type specifiers I can't (yet) do that.
robdog has joined #lisp
<malice`> ThomasLewis[m]: thanks!
robdog has quit [Ping timeout: 250 seconds]
<beach> malice`: Even if you just mean what can be read as a symbol, there is no regular expression for it.
<beach> Consider what the reader does when it sees the three letters abc.
<beach> If the *read-base* is 10, the reader returns a symbol.
<beach> If the *read-base* is 16, it returns an integer.
<malice`> bea
<beach> Again, if you just mean what can be read as a symbol, you will find the definition here: http://www.lispworks.com/documentation/HyperSpec/Body/02_cd.htm
jprajzne has joined #lisp
<malice`> beach: I am trying to write TextMate grammar for CL. I think I'll go with something basic like "anything not whitespace or between ||"
<beach> Such an attempt will always be an approximation.
<beach> I created a grammar for Common Lisp for (first) Climacs so that I could parse buffers containing Common Lisp code, but, again, it is a gross approximation. That's why, for Second Climacs, I am using a version of the Common Lisp READ function to parse the buffer contents. Then it will be very precise.
pritambaral has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
karlosz has joined #lisp
Harag has quit [Ping timeout: 258 seconds]
wanz has quit [Quit: wanz]
<pjb> akater: type specifiers are not objects. They're specifiers for virtual objects: types are not first class objects in CL.
<malice`> That's true. Thanks for the pointers.
<pjb> (defclass foo () ()) (find-class 'foo) #| --> #<standard-class foo> |# (deftype bar () '(member bar)) (find-type 'bar) #| ERROR: Undefined function find-type called with arguments (bar) . |#
<pjb> That said, nothing prevents us to implement type objects.
orivej has quit [Ping timeout: 240 seconds]
<pjb> That's probably the first thing a compiler writer would do, I guess…
wanz has joined #lisp
sauvin has joined #lisp
bendersteed has joined #lisp
bendersteed has quit [Remote host closed the connection]
wanz has quit [Quit: wanz]
pierpal has quit [Ping timeout: 246 seconds]
<ym> Are sharplispers in the chat? I'm using last CLX from quicklisp, having an issue, but not sure why can't I find similar code on github even taking in account modifying date. The file is clx.lisp in root project directory. On my host system there is missing ":initarg :visual-info" slot parameters in colormap class definition (IIUC), though there is no such place in gethub version.
meepdeew has joined #lisp
meepdeew has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
<beach> ym: You may want to talk to jackdaniel when he comes around.
robdog has joined #lisp
wanz has joined #lisp
abhixec has quit [Ping timeout: 240 seconds]
shka_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
orivej has joined #lisp
<ym> I'll better write an issue on github.
<beach> Sure.
shka_ has quit [Client Quit]
shka_ has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
emaczen has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
<jackdaniel> ym: are you certain that you have the newest ql distribution?
angavrilov has joined #lisp
<jackdaniel> that was a regression fixed months ago
<jackdaniel> well, "months" suggests many, around 2018-12-03
arpunk has quit [Ping timeout: 250 seconds]
<ym> clx-20181210-git
<ym> And yes, ql says everything's up.
gxt has quit [Ping timeout: 272 seconds]
meepdeew has joined #lisp
meepdeew has quit [Ping timeout: 244 seconds]
scymtym has joined #lisp
vertigo has quit [Ping timeout: 250 seconds]
malice` has quit [Remote host closed the connection]
<jackdaniel> cache maybe? or ql didn't pull the changes? I don't know really
<jackdaniel> as you can tell yourself, repository has def-clx-class (not defclass)
vertigo has joined #lisp
milivoj has quit [Quit: milivoj]
<ym> Ok then.
arpunk has joined #lisp
varjag has joined #lisp
robdog has joined #lisp
milivoj has joined #lisp
Harag has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
bendersteed has joined #lisp
Grauwolf has quit [Remote host closed the connection]
Grauwolf has joined #lisp
gxt has joined #lisp
dmiles has quit [Ping timeout: 255 seconds]
shrdlu68 has joined #lisp
schweers has joined #lisp
<shrdlu68> Morning, what was the name of that CL shell? Something like bash, but written in CL and with CL integration.
<shrdlu68> Where exactly is sb-ext:*posix-argv* documented?
makomo has joined #lisp
WorldControl has joined #lisp
WorldControl has quit [Read error: Connection reset by peer]
robdog has joined #lisp
Lycurgus has joined #lisp
<makomo> morning
Inline has quit [Quit: Leaving]
mbrock has quit [Read error: Connection reset by peer]
robdog has quit [Ping timeout: 250 seconds]
dmiles has joined #lisp
CrazyEddy has quit [Ping timeout: 268 seconds]
milivoj has quit [Quit: milivoj]
smasta has joined #lisp
rozenglass has quit [Ping timeout: 268 seconds]
smasta has quit [Ping timeout: 255 seconds]
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #lisp
lemoinem is now known as Guest17583
Guest17583 has quit [Killed (cherryh.freenode.net (Nickname regained by services))]
lemoinem has joined #lisp
Inline has joined #lisp
marvin2 has joined #lisp
robdog has joined #lisp
robdog_ has joined #lisp
random-nick has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog_ has quit [Ping timeout: 264 seconds]
<schweers> how do I specify a relative path which goes up the hierarchy? I.e. what one would do with ".." on unix.
<schweers> I have a pathname to a file and want to access a file relative to it. The relative path is something like this (using unix syntax): "../../foo/bar.txt"
<schweers> Now that I think of it, I guess I can just apply some list operations on the directory component of the given file.
<lieven> I don't think that's standardized. Back in the days there were operating systems that did not have that capability
meepdeew has joined #lisp
robdog has joined #lisp
<jdz> schweers: something like (merge-pathnames "../../foo/bar.txt" <the-other-pathname>)?
<loke> lieven: SBCL supports :UP I think.
<schweers> jdz: is that portable?
<loke> But yeah, not starndard.
<jdz> Well, (merge-pathnames (make-pathname :directory '(:relative :up :up)
<jdz> ...))
<no-defun-allowed> I thought it was standard.
<loke> no-defun-allowed: I don't think so
<no-defun-allowed> merge-pathnames mentions `:back`.
dlowe has quit [Ping timeout: 246 seconds]
meepdeew has quit [Ping timeout: 258 seconds]
<schweers> I just worked with the directory list, everything seems fine.
<no-defun-allowed> Hmm, surely there's a portable "go up a directory" symbol.
<loke> no-defun-allowed: :BACK basically just means “remove the previous symbol”
<no-defun-allowed> Gotcha.
robdog has quit [Ping timeout: 264 seconds]
<jdz> clhs 19.2.2.4.3
<specbot> Restrictions on Examining a Pathname Directory Component: http://www.lispworks.com/reference/HyperSpec/Body/19_bbdc.htm
<loke> SBCL throws “:BACK can't be represented in namestrings”
<schweers> Ah, so :back and :up are standard, cool
dlowe has joined #lisp
smasta has joined #lisp
xkapastel has joined #lisp
<loke> schweers: :UP is SBCL-specific I think.
<schweers> slhs 19.2.2.4.3 disagrees
smasta has quit [Ping timeout: 250 seconds]
<schweers> s/slhs/clhs/
ebrasca has quit [Ping timeout: 246 seconds]
ebrasca has joined #lisp
robdog has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 252 seconds]
Achylles has joined #lisp
robdog has joined #lisp
robdog_ has quit [Ping timeout: 252 seconds]
robdog has quit [Ping timeout: 264 seconds]
vilivulpine has quit [Quit: Using Circe, the loveliest of all IRC clients]
<makomo> how come some implementations' MACROEXPAND-ALL function doesn't take an environment object?
<makomo> that seems like an essential part of the functionality to me
meepdeew has joined #lisp
giova has joined #lisp
<beach> What kind of environment would you pass to it?
<beach> In SICL, we have multiple first-class global environments, but most implementations have a single global environment.
<beach> And I don't see a use for MACROEXPAND-ALL in a compile-time environment.
meepdeew has quit [Ping timeout: 250 seconds]
bendersteed has quit [Ping timeout: 240 seconds]
karlosz has quit [Quit: karlosz]
jb____ has joined #lisp
jb__ has quit [Ping timeout: 246 seconds]
giova has quit [Quit: Page closed]
bendersteed has joined #lisp
<beach> makomo: Am I missing something?
verisimilitude has quit [Remote host closed the connection]
verisimilitude has joined #lisp
Lycurgus has quit [Quit: Exeunt]
bendersteed has quit [Quit: returning in a bit]
Achylles has quit [Ping timeout: 258 seconds]
<flip214> beach: well, wouldn't the dynamic environment specify which forms (and symbols!) are to be expanded?
<flip214> eg. within a SYMBOL-MACROLET?
bendersteed has joined #lisp
<beach> You mean the lexical compile-time environment? Sure, but then you are already in a language processor, so you would typically do macroexapand-1 as you go.
<makomo> beach: a lexical environment for example. a code walking macro might want to walk its body, but with the definitions from its surrounding lexical scope in effect (this is what you almost always want to do)
<beach> But, again, you are already doing some language processing, so you would macroexpand-1 as you go.
<beach> Why would you want to do macroexpand-all in such an environment?
<beach> It would be the result of your full processing anyway.
<beach> A code walker always accomplishes the equivalent of macroexpand-all, at least for the forms that it processes. Macroexpand-all is just one possible output of a code walker.
<makomo> beach: hm, what do you mean by "you're already in a language processor"? i'm looking at this from a user's point of view. we know that it's impossible to portably handle code walking as its impossible in certain cases for the code walker to pass the right environment object to the macro expansion function (essentially, because of the opaqueness of the environment objects)
<makomo> an implementation's macroexpand-all could be used to build a proper code walker, because macroexpand-all would essentially handle the environment augmentation (rather than the walker having to keep track of the environment using its own representation)
<beach> But to implement macroexpand-all, you need a code walker.
<beach> So it is usually done the other way around.
stevencc has quit [Remote host closed the connection]
<makomo> right :-). that's why i would rely on macroexpand-all being implemented within the implementation (as a nonstandard thing, of course)
<beach> I see.
<makomo> ah, yes, that's true for the implementation's own code walker, indeed
<beach> Well, I think the thinking behind it that you would then just use the code walker instead.
<beach> It would be very strange for an implementation to provide macroexpand-all and not provide an interface to the code walker used to implement it.
<makomo> beach: hm, maybe, but i'm not completely sure as i haven't checked the various implementations. i was looking again at the trivial-macroexpand-all library and what caught my eye is that certain implementations don't support the environment parameter for macroexpand-all
<makomo> i thought that was pretty weird, because both macroexpand and macroexpand-1 do for example
<beach> Right, because it would be called only at the top level and typically only in an implementation without first-class global environments.
nanozz has joined #lisp
<beach> Yes, for macroexpand-1, the situation is different.
<beach> It needs to be called by the compiler when the compiler does its code walking.
<beach> Also, the standard distinguishes between the startup environment and the compilation environment, so it makes sense to have that parameter. I am guessing that the person implementing macroexpand-all without that parameter did not take that possibility into account.
Lord_of_Life_ has joined #lisp
<beach> Probably, that person just observed existing implementations (silently forgetting about SICL, since it doesn't exist yet).
nanoz has quit [Ping timeout: 244 seconds]
<makomo> beach: hm, so you're looking at it from the standpoint of macroexpand, macroexpand-1 and macroexpand-all being used by the implementation itself?
<makomo> beach: yeah, maybe. some of the implementations that don't accept an environment parameter are allegro, clisp, lispworks
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
<beach> No, macroexpand-all is not used by the implementation itself. That's my point.
<beach> Probably not macroexpand either in fact. The compiler only needs macroexpand-1.
Lord_of_Life has quit [Ping timeout: 255 seconds]
Lord_of_Life_ is now known as Lord_of_Life
<beach> I don't know of any implementation that distinguishes between the startup environment and the compilation environment, other than SICL.
<makomo> beach: mhm. still, even though a compiler might use something like macroexpand-1 internally, i was thinking that the reason for its existence was so that the user can have that same ability, whather or not the compiler needs it too
<beach> Sure. It is common for the application programmer to use both macroexpand-1 and macroexpand.
selwyn has joined #lisp
<makomo> because of that, that argument is weird to me (i.e. "the compiler needs that functionality, so it makes sense")
<makomo> yeah
<makomo> and macroexpand-all would come in handy as well
<makomo> "... so it makes sense that it should accept an environment parameter"*
<beach> If you say so. I only saw the need for it when I used Common Lisp in my teaching, so that the students could observe the result.
<beach> Oh, it certainly makes sense for it to accept an environment parameter, especially given that the Common Lisp HyperSpec allows for separate startup environment and compilation environment.
<makomo> beach: i guess it would come handy indirectly, just because it could be used to implement a portable code walker (in case the implementation doesn't expose its own).
<makomo> beach: mhm, i see
<beach> I was just explaining why the person implementing macroexpand-all may not see it that way, because that person probably just observed existing implementations. And they don't separate the two.
<makomo> got it :-)
<makomo> in any case, i'm really losing hope in the usefulness of a code walker that can be written within the constraints of the standard we have (i.e. be made fully portable, without any implementaion-specific parts)
moldybits has joined #lisp
<makomo> once you start having nested code walking macros, it all just comes falling down :(. it's tricky to define a class of code walking macros that will work in all cases with such a code walker and to understand and be aware of the edge cases/assumptions when writing such a macro
<makomo> beach: is trucler nearly finished now or?
zigpaw has joined #lisp
<beach> Shouldn't be very long now.
<beach> I think I have all design decisions down.
SaganMan has joined #lisp
<beach> I am working on the documentation.
<beach> And I should try to come up with a test suite.
<beach> There is no way to write a portable code walker.
<makomo> s/fully/nearly fully/
<makomo> very nice
SaganMan has left #lisp [#lisp]
<beach> I have a video conference in a few minutes and I don't know how long it will last. So I'll be off for a while.
schjetne has quit [Ping timeout: 246 seconds]
<makomo> ok :-)
CrazyEddy has joined #lisp
<beach> I think what remains in terms of code in Trucler is just stuff like exporting all the relevant symbols, writing docstrings for exported symbols, and probably fixing a few bugs.
<beach> And Trucler doesn't lend itself to random tests, so I think I need to write a bunch of test cases manually.
Achylles has joined #lisp
gxt has quit [Ping timeout: 255 seconds]
troydm has quit [Ping timeout: 246 seconds]
gxt has joined #lisp
Kaisyu has quit [Quit: Connection closed for inactivity]
gxt has quit [Ping timeout: 246 seconds]
gxt has joined #lisp
Essadon has joined #lisp
Essadon has quit [Max SendQ exceeded]
Essadon has joined #lisp
gxt has quit [Ping timeout: 255 seconds]
gxt has joined #lisp
atgreen has quit [Read error: Connection reset by peer]
m00natic has joined #lisp
Achylles has quit [Ping timeout: 258 seconds]
refpga has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
pierpal has quit [Quit: Poof]
robdog has quit [Ping timeout: 250 seconds]
pierpal has joined #lisp
gxt has quit [Ping timeout: 246 seconds]
gxt has joined #lisp
q9929t has joined #lisp
Achylles has joined #lisp
robdog has joined #lisp
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
q9929t has quit [Remote host closed the connection]
refpga has quit [Ping timeout: 258 seconds]
arpunk has quit [Ping timeout: 255 seconds]
q9929t has joined #lisp
robdog has quit [Read error: Connection timed out]
robdog has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
amerlyq has joined #lisp
arpunk has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
FreeBirdLjj has joined #lisp
robdog has joined #lisp
shrdlu68 has quit [Ping timeout: 268 seconds]
rotty has quit [Quit: WeeChat 2.3]
rotty has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
dale_ has joined #lisp
dale_ is now known as dale
ebrasca has quit [Read error: No route to host]
rotty has quit [Quit: WeeChat 2.3]
rotty has joined #lisp
Bike has joined #lisp
robdog has joined #lisp
terpri has joined #lisp
Lycurgus has joined #lisp
wanz has quit [Quit: wanz]
ebrasca has joined #lisp
wanz has joined #lisp
LiamH has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
ym555 has joined #lisp
xkapastel has joined #lisp
sjl_ has joined #lisp
drdo has quit [Quit: ...]
drdo has joined #lisp
robdog has joined #lisp
lavaflow_ has quit [Ping timeout: 250 seconds]
Lycurgus has quit [Quit: Exeunt]
sjl_ has quit [Quit: WeeChat 2.3-dev]
sjl_ has joined #lisp
q9929t has quit [Quit: q9929t]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
Lycurgus has joined #lisp
Lycurgus has quit [Client Quit]
Lycurgus has joined #lisp
robdog_ has quit [Ping timeout: 264 seconds]
bendersteed has quit [Read error: Connection reset by peer]
scymtym has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
shka_ has quit [Quit: WeeChat 1.9.1]
ebrasca has quit [Read error: Connection reset by peer]
ebrasca has joined #lisp
trittweiler has joined #lisp
robdog has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
Inline has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
FreeBirdLjj has quit [Read error: Connection reset by peer]
igemnace has quit [Quit: WeeChat 2.4]
Inline has joined #lisp
robdog has quit [Ping timeout: 259 seconds]
FreeBirdLjj has joined #lisp
<phoe> beach: what's Trucler?
rippa has joined #lisp
<phoe> Oooh. I see.
FreeBirdLjj has quit [Remote host closed the connection]
<beach> Good. :)
Achylles has quit [Ping timeout: 259 seconds]
FreeBirdLjj has joined #lisp
wanz has quit [Quit: wanz]
robdog has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
makomo has quit [Ping timeout: 250 seconds]
makomo has joined #lisp
jack_rabbit has quit [Ping timeout: 250 seconds]
trittweiler has quit [Ping timeout: 246 seconds]
robdog has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
jonh has joined #lisp
robdog_ has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
Jesin has quit [Quit: Leaving]
asarch has joined #lisp
<asarch> Any package for the RS-232 interface?
Jesin has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
Posterdati has quit [Ping timeout: 255 seconds]
jprajzne has quit [Quit: Leaving.]
robdog has joined #lisp
smasta has joined #lisp
bobby has quit [Quit: bye bye]
shka_ has joined #lisp
robdog_ has joined #lisp
Ukari has quit [Ping timeout: 246 seconds]
robdog has quit [Ping timeout: 250 seconds]
robdog_ has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
ckonstanski has joined #lisp
Posterdati has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
bendersteed has joined #lisp
Lycurgus has quit [Quit: Exeunt]
abhixec has joined #lisp
Ukari has joined #lisp
smasta has quit [Ping timeout: 245 seconds]
lumonom has joined #lisp
robdog has joined #lisp
Achylles has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
smasta has joined #lisp
robdog has joined #lisp
ym555 has quit [Ping timeout: 268 seconds]
robdog has quit [Ping timeout: 250 seconds]
smasta has quit [Ping timeout: 245 seconds]
schweers has quit [Ping timeout: 250 seconds]
smasta has joined #lisp
smasta has quit [Ping timeout: 258 seconds]
m00natic has quit [Remote host closed the connection]
nowhere_man has joined #lisp
<lumonom> hi i am rather new to CL and i was wondering if anybody of you knows a nice Open Source project to get some experience as a beginner.
<beach> What kind of domain would you be interested in?
<Ukari> any one knows how to use ecl's mp:compare-and-swap-structure?
lumm has joined #lisp
<beach> Ukari: jackdaniel probably does.
<lumonom> @beach i am very interested in everything with AI and robotics also i think image processing is very interesting
smasta has joined #lisp
<beach> lumonom: Those are not quite my domains. Plus, my (admittedly small) family is telling me that dinner is ready, so I have to go. I hope someone else will give you some hints.
<lumonom> ok thank you anyway
<beach> lumonom: I have some image processing projects, but no code yet, so there is nothing to see.
<White_Flame> opencv is a big standard library for computer vision that has lisp bindings
<beach> Seriously, FFI for a beginner?
<White_Flame> those details seemed to be well hidden last time I looked
<White_Flame> but yeah, maybe it's a bit crazy :)
smasta has quit [Ping timeout: 255 seconds]
<lumonom> thanks so my main intention is to get some experience in lisp coding by helping out some more experienced programmers that are willing to teach me something for my help the topic is kinda of secondary importance to me
<White_Flame> lumonom: the first thing to do would eb to learn Common Lisp itself :)
<White_Flame> minion: tell lumonom about pcl
<minion> lumonom: please look at pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
<lumonom> White_Flame yea i am at it
<White_Flame> cool
ravenousmoose has joined #lisp
<White_Flame> also, #clschool is a channel more for beginners. Questions here tend to get fairly in-depth responses
<lumonom> i have that book right in front of me :D
<White_Flame> feel free to ask the newbiest of questions there :)
<lumonom> ok thanks i will check it out
<makomo> lumonom: if you're interested in AI, Peter Norvig's Paradigms of Aritficial Intelligence (PAIP) is also a good introduction to CL
<makomo> it combines the two
<White_Flame> it's logical AI, instead of modern statistical AI, but still very good
ravenousmoose has quit [Client Quit]
<shka_> paip algorithms are useful
<shka_> as: normal IT kind of useful
<shka_> so they are good to know
Josh_2 has joined #lisp
<lumonom> yes i have that book as well also i am not that deep into it yet i was just thinking that a real project would help me get some real experience in edition to all the books. but thanks for all the advice
gxt has quit [Ping timeout: 255 seconds]
gxt has joined #lisp
matijja has joined #lisp
lumm_ has joined #lisp
lumm has quit [Read error: Connection reset by peer]
lumm_ is now known as lumm
bendersteed has quit [Ping timeout: 255 seconds]
smasta has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
smasta has quit [Ping timeout: 246 seconds]
rumbler31 has joined #lisp
aindilis has quit [Read error: Connection reset by peer]
moldybits has quit [Ping timeout: 250 seconds]
smasta has joined #lisp
q9929t has joined #lisp
aindilis has joined #lisp
lumm has quit [Remote host closed the connection]
smasta has quit [Ping timeout: 245 seconds]
ym555 has joined #lisp
varjagg has joined #lisp
rpg has joined #lisp
varjagg is now known as erjag
selwyn has quit [Remote host closed the connection]
trittweiler has joined #lisp
lumm has joined #lisp
matijja has quit [Ping timeout: 255 seconds]
lavaflow_ has joined #lisp
MichaelRaskin has joined #lisp
lumm has quit [Ping timeout: 245 seconds]
karlosz has joined #lisp
<asarch> Thank you phoe!
<asarch> Thank you very much :-)
rumbler31 has quit [Remote host closed the connection]
nanozz has quit [Ping timeout: 272 seconds]
karlosz has quit [Quit: karlosz]
<asarch> One last question: and for the USB? Can I use both for those laser-readers?
Inline has quit [Read error: Connection reset by peer]
Inline has joined #lisp
lumm has joined #lisp
<phoe> that's a binding
<phoe> talking to USB is much simpler than talking to serial ports though
<phoe> wait - I got it wrong
<phoe> that's usb-serial
<asarch> Thank you!
<phoe> yes, I completely mixed them up - never mind me and my ignorance on the topic
lumm has quit [Read error: Connection reset by peer]
<asarch> Thank you very much once again :-)
<phoe> no problem
lumm has joined #lisp
random-nick has quit [Ping timeout: 245 seconds]
asarch has quit [Quit: Leaving]
grumble is now known as `-_-`grumble
sauvin has quit [Read error: Connection reset by peer]
lumm has quit [Ping timeout: 250 seconds]
robdog has joined #lisp
smasta has joined #lisp
lumm has joined #lisp
gxt has quit [Ping timeout: 255 seconds]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
lumonom has quit [Quit: WeeChat 1.4]
<shka_> good evening
robdog_ has quit [Ping timeout: 250 seconds]
<shka_> lisp lib offering matlab/numpy style array broadcasting?
<eschatologist> minion: memo for emaczen, One good place to read up on the threading rules for Cocoa would be the Threading Programming Guide: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html
comborico1611 has joined #lisp
<minion> Remembered. I'll tell emaczen when he/she/it next speaks.
`-_-`grumble is now known as grumble
robdog has joined #lisp
ggole has quit [Quit: Leaving]
robdog has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
slyrus_ has joined #lisp
robdog_ has joined #lisp
cgay has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
robdog_ has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
comborico1611 has quit [Quit: Konversation terminated!]
matijja has joined #lisp
giova has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
josemanuel has joined #lisp
ckonstanski has left #lisp ["ERC (IRC client for Emacs 26.1)"]
smasta has quit [Ping timeout: 255 seconds]
lumm has quit [Quit: lumm]
Lycurgus has joined #lisp
lumm has joined #lisp
smasta has joined #lisp
robdog has joined #lisp
robdog_ has joined #lisp
smasta has quit [Ping timeout: 255 seconds]
smasta has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
q9929t has quit [Quit: q9929t]
giova has quit [Ping timeout: 256 seconds]
robdog has joined #lisp
Zaab1t has joined #lisp
smasta has quit [Ping timeout: 246 seconds]
lumm has quit [Ping timeout: 258 seconds]
robdog_ has quit [Ping timeout: 268 seconds]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
robdog has joined #lisp
Bike has quit [Quit: Page closed]
robdog_ has quit [Ping timeout: 264 seconds]
robdog has quit [Ping timeout: 264 seconds]
jmercouris has joined #lisp
<jmercouris> in fiveam if I have (skip "something") within a test body, will it execute the body still and just not run the tests?
<jmercouris> or will it actually not invoke the call?
voidlily_ has joined #lisp
<jmercouris> something like (test xyz (skip "this test is long") (long-operation))
voidlily has quit [Read error: No route to host]
robdog has joined #lisp
random-nick has joined #lisp
ober has left #lisp ["ERC (IRC client for Emacs 26.1)"]
xkapastel has joined #lisp
<jmercouris> seems like not
<jmercouris> Is there a string predicate?
<jmercouris> I can't seem to find something like string-p
<jmercouris> damnit, that dash
<jmercouris> I keep forgetting
<jmercouris> sorry for the noise
gxt has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
lumm has joined #lisp
Bike has joined #lisp
cl-arthur has joined #lisp
robdog has joined #lisp
robdog_ has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
karlosz has joined #lisp
random-nickname has joined #lisp
robdog has joined #lisp
random-nick has quit [Ping timeout: 246 seconds]
rumbler31 has joined #lisp
robdog_ has quit [Ping timeout: 264 seconds]
ismay has joined #lisp
vilivulpine has joined #lisp
asarch has joined #lisp
robdog_ has joined #lisp
rumbler31 has quit [Ping timeout: 250 seconds]
karlosz has quit [Quit: karlosz]
robdog has quit [Ping timeout: 268 seconds]
robdog has joined #lisp
robdog_ has quit [Ping timeout: 264 seconds]
karlosz has joined #lisp
karlosz has quit [Client Quit]
FreeBirdLjj has quit [Remote host closed the connection]
robdog_ has joined #lisp
lumm has quit [Read error: Connection reset by peer]
robdog has quit [Ping timeout: 264 seconds]
izh_ has joined #lisp
space_otter has joined #lisp
lumm has joined #lisp
robdog has joined #lisp
fwm9 has joined #lisp
robdog_ has quit [Ping timeout: 250 seconds]
robdog has quit [Ping timeout: 264 seconds]
orivej has quit [Ping timeout: 246 seconds]
shka_ has quit [Ping timeout: 245 seconds]
smasta has joined #lisp
lumm has quit [Ping timeout: 245 seconds]
robdog has joined #lisp
jkordani has quit [Read error: Connection reset by peer]
Lycurgus has quit [Quit: Exeunt]
robdog has quit [Ping timeout: 264 seconds]
smasta has quit [Ping timeout: 272 seconds]
robdog has joined #lisp
lumm has joined #lisp
karlosz has joined #lisp
abhixec has quit [Remote host closed the connection]
smasta has joined #lisp
robdog has quit [Ping timeout: 264 seconds]
<aeth> jmercouris: for future reference, it would be here http://www.lispworks.com/documentation/HyperSpec/Body/c_string.htm
<aeth> Although you have to be careful because there are a lot of valid functions/macros that go somewhere else, e.g. sequence stuff will work on strings (obviously won't matter if it's string-specific like stringp)
<aeth> s/it would be here/it would be found by going here/
robdog has joined #lisp
rpg has quit [Quit: Textual IRC Client: www.textualapp.com]
pritambaral has quit [Quit: Konversation terminated.]
josemanuel has quit [Quit: leaving]
robdog_ has joined #lisp
robdog has quit [Ping timeout: 268 seconds]
karlosz has quit [Quit: karlosz]
rcosta has joined #lisp
robdog_ has quit [Ping timeout: 268 seconds]
karlosz has joined #lisp
robdog has joined #lisp
amerlyq has quit [Quit: amerlyq]
smasta has quit [Ping timeout: 244 seconds]
robdog has quit [Ping timeout: 250 seconds]
Lycurgus has joined #lisp
karlosz has quit [Quit: karlosz]
Bike has quit []
robdog has joined #lisp
karlosz has joined #lisp
robdog has quit [Ping timeout: 250 seconds]
Ukari has quit [Remote host closed the connection]
rozenglass has joined #lisp
moldybits has joined #lisp
moldybits has quit [Read error: Connection reset by peer]
moldybits has joined #lisp
robdog has joined #lisp
LiamH has quit [Quit: Leaving.]
robdog has quit [Ping timeout: 264 seconds]
izh_ has left #lisp [#lisp]
random-nickname is now known as random-nick
<moldybits> (prog1 x (incf x)) ; any better way to emulate C's x++?
<_death> you can write a post-incf macro
<asarch> (defmacro ++ (value) (incr value))
<asarch> ?
<asarch> Does it really matter for Lisp if it is pre- or post-?
robdog has joined #lisp
<moldybits> asarch: (setf x (incf y)) ; x will be y+1. with post-incf it'd be y. in both cases y will become y+1.
iovec has quit [Quit: Connection closed for inactivity]
robdog has quit [Ping timeout: 264 seconds]
<moldybits> i'm using it to assign and increment a next-available-id variable.
<_death> you can write a new-id function and forget about it
angavrilov has quit [Remote host closed the connection]
actuallybatman has quit [Ping timeout: 250 seconds]
<asarch> I mean, what's the matter in a expression like: "a + b++ + c" or "a + ++b + c" in Lisp?
<Josh_2> If you don't like it, you can use a macro to make syntax like that
<asarch> (+ a (++ b) c)
<asarch> (+ a (pre-incr b) c)
<asarch> ?
<asarch> (Assuming (++ ...) does a post-incr)
<asarch> Or also: (+ a (++ b :pre) c)
<asarch> ?
<cl-arthur> Dles k
<cl-arthur> "Does it really matter if it's pre- or post-" won't that change the values of your sums?
<asarch> Touche!
<asarch> Python can't actually do neither one
<asarch> a++ or ++a
<cl-arthur> (incf v) inside a sum like that would behave as a pre-incr, because of applicative order evaluation and everything being an expression.
<aeth> moldybits: prog1 seems like the way to do it imo
smasta has joined #lisp
<aeth> that's basically what prog1 is for imo
<cl-arthur> Yeah, prog1 to emulate x++ seems good.
<moldybits> i'm using a post-incf macro because it turned out to be easier enough to read at a glance to justify it. (post-incf (blah-next-id x)) instead of (prog1 (blah-next-id x) (incf (blah-next-id x)))
<_death> hopefully you're using get-setf-expansion to avoid multiple evaluation of place
lumm has quit [Remote host closed the connection]
robdog has joined #lisp
<moldybits> _death: how do you mean? :o
<_death> well, I gtg to sleep now.. so I'll just give the spoiler https://stackoverflow.com/questions/65607/writing-a-macro-in-common-lisp/10567794#10567794
<moldybits> i guess i just assumed incf didn't evaluate its first argument
<aeth> moldybits: alexandria:once-only can help with macros like that
<_death> no, that won't work because you're dealing with places
<aeth> ah
robdog has quit [Ping timeout: 264 seconds]
Achylles has quit [Ping timeout: 258 seconds]
Bike has joined #lisp
<jmercouris> aeth: thanks for the link
robdog has joined #lisp
jmercouris has quit [Remote host closed the connection]
Zaab1t has quit [Quit: bye bye friends]
igemnace has joined #lisp
<moldybits> _death: thanks. i never would've guessed.
<moldybits> i guess i'll stick with prog1 for now :(
karlosz has quit [Quit: karlosz]
random-nick has quit [Read error: Connection reset by peer]
robdog has quit [Ping timeout: 264 seconds]
karlosz has joined #lisp
amerlyq has joined #lisp
la_mettrie has joined #lisp
ismay has quit [Quit: Using Circe, the loveliest of all IRC clients]
<aeth> moldybits: you could use define-modify-macro to write your own incf
<la_mettrie> clisp is not updated for ages... is sbcl an obvious choice?
<la_mettrie> *has not been updated
<aeth> (if define-modify-macro is powerful enough, need to check...)
<aeth> hmm, nevermind, I think that's always incf semantics
<aeth> la_mettrie: The most popular implementation is SBCL, followed by CCL. The rest are probably too close to each other in popularity to reliably measure, although it's hard to measure anything.
<la_mettrie> SDL with bindings is a fine gfx API with SBCL? or do you recommend something else?
<aeth> la_mettrie: generally, people use cl-sdl2 with cl-opengl but alternatives to cl-sdl2 exist.
<aeth> la_mettrie: Even if you're not making a game, #lispgames might be the most helpful channel for 3D Common Lisp applications
Lycurgus has quit [Quit: Exeunt]
<la_mettrie> thanks for advice
la_mettrie has left #lisp ["WeeChat 2.2"]
robdog has joined #lisp