freenode/#lisp - IRC Chatlog
Search
17:38:05
fiddlerwoaroof
Did something change about the way Quicklisp/ASDF handles symlinks in local-projects?
17:38:56
fiddlerwoaroof
I've been symlinking my projects into ~/quicklisp/local-projects for a while, but recently I been running into situations where ASDF can't find them.
17:40:16
fiddlerwoaroof
I'll occasionally upgrade SBCL, etc., but I've used both SBCL and CCL without problems for a long time
18:18:56
pyc
What Common Lisp compiler should I use that would compile my LISP to machine code and is available on Linux, Windows and Mac?
18:22:32
pyc
https://cliki.net/Common%20Lisp%20implementation says SBCL is only experimental on Mac, FreeBSD and Windows.
18:23:15
makomo
fiddlerwoaroof: if you made the symlink without restarting the lisp image, perhaps you have to use (ql:register-local-projects)?
18:23:17
dlowe
though I think perhaps a newcomer shouldn't have to worry about whether or not it compiles to machine code while learning
18:23:25
Bike
that page could be out of date. i believe it works perfectly well on mac and freebsd, and pretty well on windows.
18:23:26
beach
pyc: On Mac and Windows, you can buy a license for a commercial Common Lisp implementation.
18:24:06
Bike
http://sbcl.org/platform-table.html as you can see on sbcl's own webpage, freebsd, windows, and darwin are marked as "Available and supported" (on some architectures)
18:24:18
makomo
fiddlerwoaroof: another thing that caused problems for me was that i was violating ASDF's rules (afaik) by not having the system named "foo" in the file named "foo.asd"
18:25:29
makomo
not sure if either of these apply to you since you said you've been using sbcl/ccl for a long time, but it doesn't hurt to check i guess
18:40:10
ealfonso
can I have an extendable nx3 array? I'm getting "only vectors can have fill pointers"
18:42:02
Younder
Remember the 'golden rule' if you have more data you usually have a *lot* more data so grow by a factor of 2^x
18:42:49
Bike
you can use adjust-array to change the size of an array (pass make-array :adjustable t), but vector-push-extend will only work on vectors
18:45:23
light2yellow
how does one call ' (quote-operator)? an alias for `quote'? a special operator? a macro? what is it?
18:47:25
Younder
Reader macro's are a part of the extensible syntax of Lisp allowing custom languages like Yacc and Lex
18:47:56
ealfonso
sjl thanks. I guess I would have to call vector-push-extend 3 times in my case. I can also just pack/unpack multiple small ints into one
18:48:23
sjl
ealfonso: you might just want to write a function that takes 3 elements and does 3 aref's
18:50:47
ealfonso
Younder not much to do with math, I'm storing a game move that consists of a 3-tuple, and an arbitrary # of moves can be added
18:53:36
phoe
How can I access a slot's value if the slot is defined with :ALLOCATION :CLASS and I only want to access the class metaobject and not an instance of that class?
18:56:37
light2yellow
from the definition of reader macro ( http://www.lispworks.com/documentation/lw51/CLHS/Body/26_glo_r.htm#reader_macro ) it is now clear if it has any relation to quote special operator. in learning materials they often go together, but do they really have any connection? because one is not defined in terms of another. in notes to quote ( http://www.lispworks.com/documentation/HyperSpec/Body/s_quote.htm#quote )
18:56:39
light2yellow
it says "The textual notation 'object is equivalent to (quote object); see Section 3.2.1 (Compiler Terminology).", but I didn't manage to find anything relevant
19:33:33
verisimilitude
So, I've experienced some issues with xterm I don't believe I'll be able to work around, but which I also don't believe are my problem at this point, with regards to my terminal library. I'll explain.
19:34:58
verisimilitude
Here, x, y, and z are arbitrary bytes, with x denoting the mouse and y and z denoting the mouse position, plus thirty two.
19:35:35
verisimilitude
So, clicking the top left corner with the first mouse button sends ESCAPE followed by ``[M !!''.
19:36:05
verisimilitude
In their wisdom, the xterm developers thought a limit below 256x256 was reasonable, but that's not the main issue.
19:36:34
verisimilitude
So, a Common Lisp that doesn't understand UTF-8 won't be able to read it properly.
19:36:50
verisimilitude
A Common Lisp that does understand UTF-8 will return a different character, since it's an invalid sequence.
19:39:13
verisimilitude
One can already look at X11 and tell it was designed by idiots, but this is a great example of just how stupid they are.
19:39:47
jasom
doh! *standard-input* is bivalent, but *terminal-io* is not. You can get the underlying FD from sbcl though and make a new fd stream from it
19:40:03
verisimilitude
The ECMA-48 standards sends real control functions for reporting this kind of information, but I suppose they wanted to save a few bytes or spare C from parsing anything, since it would get that wrong.
19:40:50
jasom
verisimilitude: you can't do binary IO to the teriminal in ANSI common lisp. Just like you can't invoke the GC or run an external program
19:41:40
phoe
surely they haven't thought of everything that everyone would have been doing years after they've designed the protocol, have they
19:41:42
jasom
verisimilitude: there is a good chance that this protocol did not come originally from xterm. Many escape codes predate X by at least a decade.
19:41:55
verisimilitude
Again, even if I could do this, it still wouldn't work on a terminal larger than 224x224.
19:43:11
verisimilitude
Now, the ECMA-48 ACTIVE POSITION REPORT sends the current cursor position, but it encodes this in decimal. So, you may get ESCAPE [ 1 ; 1 R or ESCAPE [ 100 ; 50 R, but this clearly works at any reasonable terminal dimension and technically has no limit.
19:43:28
verisimilitude
Meanwhile, xterm limits itself to 224x224 to save a few bytes and remove the need to parse things.
19:44:07
jasom
It's almost like they were writing this in C where parsing strings is hard, but treating characters like integers is trivial?
19:44:53
foom
All day you've been saying this or that was disgusting, disgrace, these people are idiots, etc.
19:45:10
jasom
I try to design things with no mind to the future. 99% of the time it won't last so why waste the effort?
19:45:34
phoe
verisimilitude: no, it's the idiots behind CL who designed the language in a way that it's impossible to switch streams between binary and character modes. This thing is broken and was designed with no mind to the future. /s
19:48:03
verisimilitude
Well, I thought that was an interesting little tidbit; I hope some of you also found it interesting.
19:48:41
jasom
someone calling people idiots who built something 30 years ago that is still being used today seems a bit arrogant. All engineering decisions are imperfect, so finding an imperfection does not imply the decision maker was an idiot
19:50:41
verisimilitude
People always like to claim that every thing is broken or imperfect, but they get angry if their processor decides to stop adding numbers correctly.
19:51:29
foom
I mean, I'm not sure why you're even complaining about this, when you could just use the other mouse-reporting mode?
19:51:39
phoe
verisimilitude: well, good luck with making your own decisions. if you fail, you'll likely get called an idiot by someone like-minded.
19:51:41
verisimilitude
The correct way to do this, jasom, would've been to send a control function similar to ACTIVE POSITION REPORT, which wouldn't have any of these issues.
19:52:04
verisimilitude
You see, that control function and others were designed by people with some foresight and brains.
19:54:17
sukaeto
<schweers> beach: why do you (and others?) insist on the terminology of a condition being “signalled” instead of being “thrown”? Is there a deeper meaning to the terms than I am seeing?
19:54:46
sukaeto
^ since (unless I missed it, in which case, sorry) no one else explicitly pointed it out - because that is the term defined and used in the Common Lisp spec
19:58:35
sukaeto
jmercouris: again, I did not ask the question. I merely quoted schweers (who, it would unfortunately appear, is not in the channel right now) for context since it was asked a while ago in the back buffer
22:29:00
catern
so many lisps drop the user into a nested-REPL when there is an error, and let the user handle the error and resume computation
22:29:39
catern
is there any syntax or usual way to handle, "I want some value but I don't know how to get it, I'll drop to a REPL and the human will return it to me"?
22:29:53
catern
like, I'm essentially looking for syntax for handling "asking a human" for something
22:33:03
catern
but I'm talking presenting the user with a full-on REPL, where they might use data passed to them or inspect the stack or whatever, in their quest to produce the desired value
22:59:20
Bike
(make-array ... :fill-pointer t) initializes the fill pointer to be the initial length
23:06:45
p_l
nickername: well, there's a faq on website, iirc, github issues are AFAIK the actual final submission mechanism, but for stuff not covered there you can probably bug Xach ?
23:40:02
nickername
Email isn't too good to me right now. I hate to ask, but can I just put it here?
23:43:08
nickername
I don't like being forced to use Freenode, but it's the least objectionable option.
23:43:30
nickername
Now, you can either add my programs, as I've been asking for months, or I can create a quicklisp competitor.
23:44:23
Xach
If you email me about it, I'll look at them again, but if you don't want to email and don't want to use github, please do whatever you like.
23:45:03
Xach
I think it would be very challenging to work with a community if you don't want to interact with gmail or github, but life would be boring without challenges.
23:45:53
jasom
ebrasca: you were asking for examples of when defun (setf ...) doesn't work? I just thought of one; if you e.g. wanted to make a (setf (assoc ...) ...) that might add a new item to the front of the list without modifying the tail, you can't do that in a function (if you are okay modifying the tail then it's no problem because you could just add a cons after the head, and swap the CARs)
23:50:07
Xach
For those not in #quicklisp, verisimilitude/nickername is someone who wants to remain anonymous while submitting libraries to quicklisp. I told them I had to think about that a while, and every day, sometimes multiple times per day, they asked for status updates. I didn't want that pressure while thinking about it.
23:50:55
Xach
I decided I am ok with it, but I don't really appreciate the way it has been requested.
23:54:32
jasom
I'm just happy I live in a different world from verisimilitude; he seems to live in a world with a lot more idiots in it than mine.
0:18:37
jasom
is there a library that provides atomic increment/decrement operations across implementations?
0:29:38
sukaeto
Let's just say that verisimilitude hasn't been making the best impression on me since they've showed up here. I'll try to hold my tongue from here on out.
0:30:55
Bike
i am curious if/when quicklisp will be non-beta. of course it works pretty fine as-is, and i vaguely remember the block being documentation
0:43:17
p_l
Xach: I've been thinking recently about possibly packaging QL into separate static executable, kinda like roswell, to provide an environment a bit more familiar to newcomers (and to be able to easily link with TLS libs for verification)
2:20:32
z3t0
I am using QTools with SBCL and am having the application and sbcl crash once a window receives focus
2:54:25
iqubic
like prettify-symbols-alist and I want replace the entry ("<->" . 8596) with ("<->" . 8660).
2:56:01
Bike
(setf (alexandria:assoc-value "<->" alist :test #'string=) 8660) is how i'd do it probably
2:57:02
iqubic
I see. Why do you have to pull in a library for what I assume would be a simple operation.
2:58:28
Bike
(let ((pair (assoc "<->" alist :test #'string=))) (if (null pair) (push (cons "<->" 8660) alist) (setf (cdr pair) 8660)))
3:06:06
Bike
they have basically the same performance characteristics as alists, and match function call syntax
3:11:04
Bike
'(a . b) will evaluate to a cons, but it won't be freshly allocated at runtime, and as pierpa alluded to, a and b won't be evaluated as they would be in (cons a b)
3:12:45
iqubic
Now, this is going to sound stupid, but the THEN and ELSE arguments of the if macro can only ever be one s-exp, right?
3:13:44
iqubic
No. Emacs tells me that COND is only ever one s-exp, but ELSE can be as many as I want.
3:55:14
loke
beach: I created a bug report about the output recrod problem, as well as a simplified test case. I even created screenshots:
3:56:12
loke
beach: Thanks. I'd appreciate even the slightest hint as to where the problem could originate.
4:02:03
loke
beach: not this one, no. There are actually two separate issues relating to output records. I stumbles on both of them at the same time, but I discovered they are separate.
4:02:34
loke
The onw I posted just now is actually independent of the text. I'm still researching a good proposal for the other one.
4:03:38
loke
The text issue has to do with the fact that DRAW-TEXT is underspecified in that the output record can't draw transformed text. I have some ideas how to fix that one.
4:06:00
beach
The first thing I will do is to stick a call to Clouseau in there and examine the output-record hierarchy.
4:08:19
loke
The really weird part that I don't understand is why the second box gets revealed as I resize the window.
4:38:49
beach
Crap. Someone seems to have modified the inspector so that it now writes to standard-output, and it modifies the output history.