freenode/#lisp - IRC Chatlog
Search
3:04:19
edgar-rft
The CLHS says that "setf {pair}* => result*" where result* are the multiple values[2] returned by the storing form for the last place.
3:04:19
edgar-rft
Simplified question: in (setf a 1) can I take for granted that the result* will be 1? The CLHS doesn't say so clearly enough IMO.
3:05:35
Bike
well, i suppose you need to know that storing forms are supposed to return the input values.
3:07:47
edgar-rft
Bike, loke: thanks, sometimes reading the CLHS just simply makes me getting paranoid :-)
3:09:25
edgar-rft
no, I only have one storing form, but it just simply saves me a lot of LET bindings if I can pass the result of a SETF to another SETF
3:23:39
loke
I'm building a new generic component that consists of a main pane, along with a set of supplementary panes that can slide in and out from the sides (similr to how IntelliJ IDEA works).
3:26:26
loke
Here is one with the drawer on the bottom https://www.i-programmer.info/images/stories/News/2
3:28:16
loke
(well, you can't see the dragging, but the two pictures have different sizes of their drawers)
3:32:33
loke
a descriptive name would be something along the lines of root-pane-with-attached-drawers, but it's a bit too long
3:32:51
mfiano
I guess look at what it's called in Swing then, or whatever java toolkit it's actually using.
3:33:35
loke
It's a jetbrains object, so I guess it'll be hiodden somewhere in their code base. Don't know if I feel like going on a hunt for it :-)
3:39:24
beach
loke: Also, whenever I have naming problems and I ask for advice, I find that I am totally unhappy with the suggestions I get.
3:39:48
loke
beach: I agree. But then, I leave it for a bit and then I realise that the suggestions were't bad
3:42:03
loke
kirkwood: My intent is to make the hidden drawers have buttons along the side (note the second screenshot I sent, it has the title written vertically along the side)
7:24:52
LdBeth
Is there any data structure optimized for fast concatenation and subsequence operation?
8:52:45
beach
LdBeth: Any balanced tree will do, but splay trees are particularly good, though only statistically so.
8:57:09
schweers
Is Sonya Keenes book on CLOS really that good? Especially if one has already read and understood the relevant chapters from PCL and uses CLOS casually?
8:58:34
schweers
I somehow struggle with proper OO design given generic functions and MI. I always thought that “OO design” was a fad, and think that it is in mainstream languages. But thanks to CLOS I can see what I’m missing.
9:01:30
beach
Yes, that too. You can look at Cluffer for instance. It has documentation and tests too.
9:05:00
schweers
thanks for the tip, especially about cluffer. I see that you have 35 pdf pages worth of docs :)
9:05:23
phoe
I actually learned a lot about object composition by reading and analyzing Shinmera's parachute library
9:10:39
beach
schweers: I do recommend the CLIM II specification. It is not quite as good as the Common Lisp HyperSpec, but the low-level parts are quite well specified.
9:11:49
schweers
beach: I’ve made a note of that. I guess I’ll first read at least the pdf documentation on cluffer.
9:12:38
beach
True, but is a stratified design, so it consists of a large number of independent "modules".
9:13:16
phoe
take it slow with the CLIM documentation - just start in one point and try to understand what it does, and then expand it by reading about an adjacent class/function/thing
9:24:23
adlai
schweers: have you read AMOP? it's a great insight into the "CLOS philosophy", even if you don't end up using any of the extra flexibility
9:26:06
schweers
I have the feeling that I understand CLOS well enough to see that OO does have some merit, but not well enough to use it to its full potential
9:27:20
adlai
you could teach yourself how to see this potential through the painful approach: start building a large system without using OO, and list the points where you regret that omission.
9:28:35
jackdaniel
"cognitive baggage is proportional to the potential of technology in question" – JD's rule of CLOS :-)
9:56:32
schweers
beach: the cluffer docs state that there are two classes for standard-line (open and closed). Do you use change-class to switch between the two?
9:58:39
phoe
https://github.com/robert-strandh/Cluffer/blob/7e9812e5f25e7d9bc34bf646eaeb467dc564b95c/Standard-line/edit-protocol-implementation.lisp#L53
9:59:09
phoe
there are exactly two occurrences of "change-class" in the code: "change-class line 'closed-line" and "change-class line 'open-line"
10:01:29
beach
schweers: Interesting you should mention open/closed lines. This concept allows me to represent most lines in a compact way. I could go through the items and if they are only ASCII characters, I could create a vector of unsigned-byte 8.
10:01:50
beach
schweers: Or, in some cases, I could run a compression algorithm on it if I wanted to.
10:03:04
schweers
I took a while to understand your comment on ASCII, but now it makes sense. Interesting design.
10:03:14
pjb
siraben: there's also Midishare, https://framagit.org/patchwork/midishare but it has a little bitrotten.
10:03:29
schweers
I think I like the idea of changing the class in order to change which methods apply without changing object identity.
10:03:57
pjb
siraben: perhaps it'll be easier to make it work on linux. The main problem is on macOS, that ffigen4 doesn't work on recent systems; it would have to be ported to newer compilers.
10:10:31
pjb
beach: things like: (com.informatimago.common-lisp.cesarum.ascii:ascii-format nil "foo ~A ~A" "bar" (com.informatimago.common-lisp.cesarum.ascii:ascii-bytes "baz")) (com.informatimago.common-lisp.cesarum.ascii:bytes<= #(65 66 67) #(65 66 68))
10:19:35
Colleen
typist /ˈtʌɪpɪst/
(noun): a person who is skilled in typing, especially one who is employed for this purpose.
10:21:40
phoe
in general, livecoding is just like making music, memorizing and training a lot so your subconscious can do the boring tasks and leave your consciousness to be actually creative
10:23:01
schweers
but yes, he does seem to be quite a decent typist and probably very good at doing what he does (besides typing)
10:34:35
schweers
beach: given that cluffer has two classes for cursors, (left and right sticky), if one wanted to alternate between the two behaviors (for instance on a per-command basis), would you consider it reasonable to change the class of said cursor regularly?
10:59:46
galdor1
pjb: I'm curious regarding the way you name package, (e.g. com.informatimago.common-lisp.cesarum.ascii) do you use package name aliases ? or do you always :USE for DEFPACKAGE ?
11:03:33
galdor1
I use very short names for my own packages, which I find more practical, but it's easier to get conflicts
11:13:24
phoe
yep - package-local nicknames is a solution for that, and it's kinda-widely-adopted now.
11:21:58
AeroNotix
is it normal/expected to use defsetf expander code to implement assertions on the value being setf?
11:28:04
phoe
unless I need to avoid double evaluation of arguments somewhere, at which point I define-setf-expander or define-modify-macro
11:28:54
schweers
hm, ccl doesn’t seem to support package local nicknames, at least not by the same feature convention as sbcl does.
11:29:31
AeroNotix
phoe: and the (setf foo) part can be anything like (setf (lookup foo blah blah)) instead, right?
11:45:06
akr
Hello, does anyone know whether there is a CL implementation of CLDR ( https://en.wikipedia.org/wiki/Common_Locale_Data_Repository )?
11:47:28
akr
oh okay looks like it's been deprecated from CLDR anyway :( http://unicode.org/cldr/trac/ticket/8421