freenode/#lisp - IRC Chatlog
Search
15:06:00
jmercouris
beach: Yeah, I am wondering how this is different from some projects that aim to "extend" the lisp language by adding some standard "modernizaion" features
15:06:24
jmercouris
I can't remember the names of these packages, but I remember them being quite controversial
15:07:28
phoe
cl21 flips the language upside down, beach's wscl doesn't AFAIR change anything in the specified behavior
15:08:03
beach
Correct. Anything that is specified in the Common Lisp standard is specified in the same way in WSCL.
15:08:48
jmercouris
beach: so you are doing the definition creation/specification of edge cases/holes in the current spec?
15:09:40
beach
jmercouris: Exactly. Specify many cases of unspecified behavior, possibly relative to OPTIMIZE quality values.
15:10:17
beach
jmercouris: But again, following as much as possible what major existing implementations already do.
15:10:35
jmercouris
Right, so basically a standard "final draft" given all the knowledge we have now
15:12:27
beach
jmercouris: According to the Common Lisp HyperSpec, the implementation can then do anything, including erasing your hard disk.
15:12:35
verisimilitude
What is your opinion on the permitted sharing behavior of Common Lisp, beach?
15:12:52
beach
jmercouris: But there is a page that says, if the type of an argument is violated, then the behavior is unspecified.
15:12:53
verisimilitude
That is, many functions and whatnot of Common Lisp permit structure to be shared or objects to be freshly created or not.
15:14:25
beach
jmercouris: Yes, and probably only in so called "safe code" (which is formally defined).
15:14:47
beach
jmercouris: But all implementations already signal a type error anyway, so I am not doing anything controversial here.
15:15:15
Fare
(of course, paths become even more "interesting" if you have to deal with per-filesystem Unicode normalization...)
15:15:35
verisimilitude
I believe the users of Common Lisp are sufficiently different from the users of C that arguments that lead to a hellish interpretation of the standard won't happen or would be ignored.
15:16:07
verisimilitude
That is, there's enough Common Lisp implementations that already follow the spirit of the language, as opposed to how C fares.
15:16:23
Fare
(and of course, you can never know for sure what file system will be used to interpret a given path)
15:16:30
phoe
because this subchapter is not followed by any modern CL implementation due to how Unicode works.
15:17:30
beach
phoe: And that I can gather together a "standards committee" of experts that I can select myself.
15:18:06
Xach
beach: have you read the emails on that topic from the early 80s? it is some interesting history.
15:18:16
beach
phoe: I certainly won't take advice from the numerous newbies in #lisp who have opinions about how the language or the standard ought to change, without having the slightest idea about how languages are created, nor how they are implemented.
15:18:34
Xach
beach: because they thought they were private, they talked freely and frankly about who was unsuitable and why.
15:20:59
jmercouris
I think people were onto something when they came up with that early memory that involved waves bouncing around in mercury
15:23:25
Bronsa
Fare: I love clojure but "for standard modernization see clojure", is just nonsense, clojure is not standardized in any way
15:25:04
loke
Bronsa: A lot of design choices in Clojure are outright bad. If those are called "modern" I'll stick with old thankyouverymuch.
15:25:06
warweasle
Bronsa: That's fairly common with lisp. Common lisp threw in almost everything from the existing lisps.
15:25:52
ealfonso
sorry if this seems trivial, but how do I get the address of a SB-SYS:INT-SAP: #.(SB-SYS:INT-SAP #X7FFFD411ED00)
15:27:04
Bronsa
warweasle: "Common lisp threw in almost everything from the existing lisps" that's not really true, but not relevant. What I was saying is not that clojure is different (which it is), but that it doesn't have a standard or a spec, so suggesting clojure as a "modernized standard" is nonsense IMO
15:28:23
Bronsa
loke: cool, me too, so what? :) again all I said is that clojure is not standardized, I havent questioned your knowledge of clojure or promoted it so I don't understand the uncalled attack on it
15:28:43
verisimilitude
So, is poor debugging, which is still the case with Clojure from what I've read, considered modern?
15:29:44
Bronsa
clojure has some decent debugging experience now, certainly not at the level of CL restart system + SLIME but not println level
15:31:02
loke
Bronsa: Well. I tend to take all opportunities to attack it, probably more often than necessary.
15:31:12
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?
15:31:39
Arathnim
It took awhile, but other languages are cathing up with CL's SLIME debugging, most notably Python + Jupyter.
15:32:54
tfb
schweers: and signal handlers can be called *before* the stack is unwound and decide if they want to unwind it or not
15:32:57
Bronsa
loke: if random attacks spawned for no reason w/o any argumentation or justification are your thing, keep at it. Not an attitude I like honestly
15:33:13
schweers
you’ve got a point, raise or throw does imply things that signal does not do. and yes verisimilitude, you’re right about THROW existing
15:38:08
loke
Bronsa: It's not usually my thing. There are a few things that causes an itch... Clojure is one of those. Mainly because it's not terrible. It's actually quite good, but fails in some spectacular ways. That's why it's a much more interesting thing to criticise than something that have absolutely no positive attributes whatsoever (like PHP or Mysql :-) )
15:42:55
Bronsa
loke: see, but I don't know what you're talking about when you say it "fails in some spectacular ways" or "a lot of its design choices are outright bad", you've just thrown attacks at it and that's not a productive thing to say (not taking into account that what common lispers perceive as bad design choices simply aren't for what clojure targets). But ok, to each their opinions on languages, I could say the same things you've just said, with CL as a subject ins
15:44:54
verisimilitude
Right; it's easy to forget that #lisp is about Common Lisp and not Lisp in general.
15:48:13
beach
schweers: What other people said. The term means something else, and the mechanisms are very different too, so it gives the wrong impression.
15:49:01
schweers
I never really made this connection between the terms used in different languages, and the mechanisms. But yes, I get it now
15:49:35
schweers
At first it seemed to me like a C++ guy asking in a python channel about exceptions being thrown, and the python guys correcting him on his use of terms.
15:52:00
Arathnim
Yeah, further work would require (and be made much easier by) direct access to the compiler, which is largely unique to lisps.
15:52:13
beach
schweers: Terminology is utterly important. And since it is often language specific, it is even more important to use it correctly in the context of a specific language.
15:53:37
jmercouris
schweers: I wasn't annoyed because as beach said, indeed there is a difference, and it is important to be precise
15:55:35
jmercouris
I'm just saying, if it was the situation you described, I would have been annoyed
15:56:07
jmercouris
just how python insists on the term "module" when deep inside, we really know they mean file, 99.99% of the time
15:56:28
cess11_
Haven't used it so I can't say what it can do but this is Antik: https://www.common-lisp.net/project/antik/
16:04:17
haduken
another thing I recall was the awfully outdated snippets which where constantly corrected here.
16:05:38
beach
haduken: If Common Lisp is your first language, many people here would recommend "gentle".
16:05:46
minion
haduken: please look at gentle: "Common Lisp: A Gentle Introduction to Symbolic Computation" is a smoother introduction to lisp programming. http://www.cs.cmu.edu/~dst/LispBook/
16:06:28
beach
haduken: Before you choose what programming tools to install, you should consult with people here. It is easy to get it wrong.
16:06:33
minion
haduken: portacle: Portacle is a complete IDE for Common Lisp that you can take with you on a USB stick https://shinmera.github.io/portacle/
16:09:48
schweers
jmercouris: I also think that some languages have important ideas to teach, even if one never uses them in production
16:10:43
Bronsa
schweers: but I don't recall having major difficulties learning it, I was reading PCL/ACL/On Lisp/SICP at the time and the union of all those made for a comprehensive learning experience
16:14:19
Bronsa
schweers: re: languages having important ideas even if never used in prod -- I absolutely agree! my instance of this is shen, I'll never ever think of using it in production but it has some very interesting (and crazy) ideas
16:16:09
Bronsa
once you accept it's a "special" lisp tho, it's got some very unique and super interesting things
16:28:29
verisimilitude
It will be good when github dies; then Free Software projects won't be able to prioritize it at the expense of other venues.
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)))