freenode/#lisp - IRC Chatlog
Search
12:57:52
ogamita
jackdaniel: ` is unrelated to code. It's a mechanism to build sexps from a template. Therefore any use of the term "form" in that page is unrelated to the glossary definition.
12:58:23
ogamita
(when a demonstration is a simple implication, to me it's a clear demonstration ;-))
13:02:52
ogamita
jackdaniel: that said, I would agree that 1- clhs in general is not formal enough. 2- the rules in 2.4.6 Backquote are not formal rules, despite the formality of the English language used in that section.
13:04:19
ogamita
jackdaniel: and I could agree that either as the rules are stated, or there's an ambiguity in the rules that 3- make ,@,@form invalid.
13:04:59
ogamita
jackdaniel: the question is what do you think, should ,@,@form do what it does in most implementation and what we thing it should be, or should it be invalid?
13:05:24
ogamita
ie. the question is whether we should formalize 2.4.6 to ensure that ,@,@form works, or to ensure that it doesn't?
13:06:50
ogamita
jackdaniel: again about "form", notice that when 2.4.6 speaks of ,form this would prevent form to be eg. (a b ,x c) because as such, this is not a valid form as per the glossary (because of the comma without a backquote!
13:07:27
ogamita
jackdaniel: so if we accepted your argument using the glossary definition of form, this while restrict greatly the possible backquote templates!
13:13:10
jackdaniel
ogamita: I find your assertions unfounded in the specification. I've led my arguments in the org file. Implications you talk about are based on your intuition not on CL standard. My whole point is that conforming program can't depend on ,@,@foo doing recursive splicing.
13:20:16
Xach
Hmm, I find it a little odd to see (error 'some-condition-type-that-is-not-a-subtype-of-error)
13:21:01
Xach
i'm looking at something using error for control flow. but i think it should probably use throw instead. SIGNAL isn't appropriate because control should certainly not continue.
13:22:31
jackdaniel
it is indeed unsettling a little, but function error (specification-wise) has nothing to do with condition error (except that it defaults to simple-error)
13:23:08
Colleen
Bike: drmeister said 7 hours, 37 minutes ago: In aclasp the FORMAT function is implemented in C++ and it doesn't use the printer - so it prints differently from bclasp once FORMAT is installed. different results from bclasp - that's bad for serialization in fasls.
13:26:27
jackdaniel
if you have guarantee that it is handled above, then you may safely use signal, no?
13:27:06
Xach
right. that's my concern. signal could silently continue if there is a mistake in up-stack handling. throw would enter the debugger.
13:27:27
Xach
it really boils down to the friction of seeing ERROR used in that type of control flow
13:27:47
Bike
if the "throw" and the "catch" are in different functions i think i'd use ERROR anyway, and make the condition an error subclass, just so that if i accidentally called the throwing function by itself i'd get a coherent debugger entry
13:28:09
jackdaniel
I'd vote for error, because it does everything you expect from it, but throw should be fine too
13:29:59
Xach
(defun decline-to-handle () (signal 'declined) (error "Hey, you didn't handle the signal, dummy!"))))
13:44:25
ogamita
I would have said signal, but if it must not continue (and signal can not return anyways), perhaps defining a specific function for this kind of flow control would be indicated.
13:44:47
jackdaniel
when I do (error (make-condition 'warning)) debugger doesn't say anything about error, it is simply invoked, so from the user perspective it isn't a big deal to see this
13:51:42
_death
the error (assuming it's not a string) gives another hook, but indeed you can use BREAK (like ERROR) if you don't want that hook
14:48:22
pfdietz
SBCL changed that at one point and broke a lot of code that was making that assumption.
14:56:48
jackdaniel
I think you may log in with other oath providers as well, but to make sure you need to ask on #common-lisp.net
14:57:41
dlowe
totp is a standard 2fa method - there's other apps/devices than google auth that support it
15:20:02
jcowan
makomo: ONCE-ONLY is not in the Maclisp manual, but it is in the Chine Nual and in Genera, so it was introduce some time in the history of Lisp Machine Lisp.
15:52:19
dim
hi guys! Xach if you're around, I think https://pastebin.com/TjdsKfJh falls in your area, thanks to being buildapp related
16:21:04
makomo
jcowan: wow, amazing!, thanks for the info. (at first i thought Chine Nual was a typo btw, first time i heard of it :-))
16:29:32
makomo
jcowan: can you tell me which page in the Chine Nual? (i'm looking at the 3rd edition)
16:30:01
makomo
a simple ctr+f doesn't help, and neither does skimming the obvious sections that have something to do with macros
16:35:36
dim
who's using uiop/image:dump-image rather than buildapp or something else? I'm considering dropping buildapp in pgloader, to ease building for some users...
17:01:33
dim
kinlo just joined here and is the OP in that case, I have no access to the system from which the error is generated
17:05:15
dim
I'm pretty happy with buildapp by the way, it mostly just does the job, and the CCL support exists… but it's still an extra step in the build process, building the buildapp binary itself…
17:07:06
dim
yeah that's what I'm contemplating uiop:dump-image to offer, but I'm not sure it actually does that well... I remember having difficulties when trying to produce an executable image for CCL with it in another local small project
17:07:41
dim
in that small project I'm using #+ccl (ccl:save-application ...) #+sbcl (sb-ext:save-lisp-and-die ...) nowadays, just works
17:08:31
Xach
i made buildapp because i could not understand all the features and options of cl-launch, and then cl-launch was partially absorbed and adapted into asdf, and I can't understand that either.
17:08:54
dim
it's basically 4 lines: 0. (in-package #:cl-user) 1. #-quicklisp (load it) 2. (ql:quickload "project") 3. ccl:save-application or sb-ext:save-lisp-and-die
17:09:44
dim
I'm not sure I can make heads&tails of the uiop stuff either, I mean last time I failed to use it and resorted to an 18 lines save.lisp file
17:11:06
|3b|
jcowan: https://github.com/3b/package-local-nicknames/blob/master/package-local-nicknames.lisp was probably intended for non-implementation-specific parts of the lib, but there ended up not being any. I'm not very good at organizing code in files :/
17:27:55
clintm
Do any of you happen to have experience with the LispWorks mobile runtime? Specifically, android.
17:30:36
beach
I like their stuff, and I have dinner with Martin Simmons and his charming wife as often as possible.
18:13:03
jcowan
beach: Freenode's policy page says "freenode provides facilities to peer-directed project communities, including those of free and open source software (FOSS)." That means "including but not limited to". Discussion of proprietary software, like discussion of closed-copyright books, is not banned. https://freenode.net/policies
18:16:39
Xach
A place where it's explicitly fine to bring a scheme perspective into every discussion
18:19:10
jcowan
I moved from one state to an adjacent state, and made my choice also some 40 years ago.
18:19:45
jcowan
I did travel in earlier years, but now I would only go somewhere I can reach by train, which in the U.S. is rather limited, even on the East Coast.
18:20:13
aeth
jcowan: On the other hand, few people here are qualified to talk about implementations they don't use (the commercial ones), but many FOSS implementations have authors here.
18:20:49
jcowan
https://genius.com/Stan-rogers-lock-keeper-lyrics is not precisely on point, but relevant.
18:32:33
aeth
jcowan: There are probably enough northeast Lispers that a meeting in the geographic middle would be possible. I guess Philadelphia?
18:33:34
aeth
Now the real question is if any are actually in Philadelphia, which I'm guessing would be the convenient geographic average of DC, Pittsburgh, NYC, and Boston.
18:41:39
anamorphic
Hi, bit confused on array types... how come I can (typep #2A((1 0 0) (0 1 0) (0 0 1)) '(simple-array number 2)) => T, but not (typep #2A((1 0 0) (0 1 0) (0 0 1)) '(simple-array bit 2))?
18:43:06
Bike
(simple-array number) is probably (simple-array T) on your implementation- you can check with (upgraded-array-element-type 'number)
18:43:47
Bike
the element-type of an array is a property of the array itself, not whatever it happens to have in it.
18:47:16
pjb
Inded. Notably: (let ((a (make-array 1 :element-type 'integer :initial-element 42))) (list (type-of a) (type-of (aref a 0)))) #| --> ((simple-vector 1) (integer 0 1152921504606846975)) |#
18:47:37
pjb
I mean: (let ((a (make-array 1 :element-type 'integer :initial-element 42))) (list (array-element-type a) (type-of (aref a 0)))) #| --> (t (integer 0 1152921504606846975)) |#
18:48:12
pjb
Or even: (let ((a (make-array 1 :element-type 'fixnum :initial-element 42))) (list (array-element-type a) (type-of (aref a 0)))) #| --> (fixnum (integer 0 1152921504606846975)) |#
18:49:43
pjb
Yes, but not the relationship. (assert (every (lambda (element) (subtypep (type-of element) (array-element-type vector))) vector))
18:51:05
pfdietz
All sorts of invariants for subtypep, though. Which is delightful for property-based testing.
18:53:57
jcowan
I think the only things you need to parameterize a portable subtypep on are (a) what array element types exist and (b) what types of floats and complex numbers exist.
18:54:35
jcowan
(and obviously what structure and class types exist, which is not known until run time)
19:00:23
jcowan
Am I right to think that an implementation can return an object of type (complex float) even if the arguments to `complex` are rational numbers, provided the imaginary part is not rational 0? There seems to be nothing to forbid it.
19:12:57
Xach
Boston may as well be on another planet right now, sadly - wish I could make it to a Lisp pal gathering but it requires much more planning than before.
19:26:49
pjb
notably, clhs complex says: Type upgrading implies a movement upwards in the type hierarchy lattice.
19:28:18
pjb
There is real above both integer and float, but you're considering (complex float), not (complex real), and ther is no direct instance of real, it's an abstract class.
19:31:27
pjb
Actually, it would be very difficult to insert any new type in the number type hierarchy.
19:35:00
jcowan
after all, single-float and double-float are not subtypes of each other either, and cannot be.
19:36:37
pjb
There's no upgrading there, since float and real are abstract, and you cannot make a complex of complex…
20:27:15
jcowan
Sure. Upgrading is about actual implemented types as opposed to describable CL types
22:02:28
dim
Xach: FYI following-up on our chat about buildapp earlier, I did something very simple for pgloader, for testing: https://github.com/dimitri/pgloader/blob/master/src/save.lisp
22:03:07
dim
if I can get enough testing, it might replace the whole Makefile that I have now... well after adding a couple features (DYNSIZE comes to mind)
22:14:20
aeth
As far as northeast Lisp meetups go, the fairest thing to do might be to rotate cities along this line: https://upload.wikimedia.org/wikipedia/commons/7/70/Boswash.png
22:33:56
stylewarning
Any BABEL users? I'm curious how one might write strings to a stream that get encoded per an encoding like ASCII or UTF-8 without generating intermediate data.
22:51:01
White_Flame
stylewarning: I think flexi-streams will output without creating intermediate buffers, but that doesn't mean it won't cons at all
23:17:25
White_Flame
ideally, the best performance route would be buffer-to-buffer with reused buffers, so it's not constantly consing
23:19:19
White_Flame
oh, trivial-utf-8 does have write-utf-8-bytes that takes a string and an output stream, so it's not all just buffers