freenode/lisp - IRC Chatlog
Search
16:40:34
jmarciano
I am often using (nor (zerop (length string to see if string is "", is there any simpler method?
17:20:31
nyef
Switching monitors got the Futura MX board working, but it still won't go past 640x480 for some reason. /-:
17:29:16
nyef
Oh, and the drive imaged into an SD card boots on the SCSI2SD, which is good to have confirmed.
17:31:32
nyef
Fare: Maybe? I'm out-of-position for attending, unfortunately. Though I may make hurried travel plans if necessary. (-:
17:44:38
nyef
pjb: Supposedly, the adaptor *does* encode the resolution. But the various settings lead to either "no signal" or 640x480. Trying to swap out for a different adaptor now.
17:46:50
pjb
You're in second generation displays: The Macintosh Color Display (14", 16" and 21") were introduced with resolutions of 640x480, 832x624 and 1152x870, with the 16 and 21 inch models being introduced in 1992, and the 14 inch model coming out with the Macintosh LCIII in 1993.
17:48:19
pjb
DA-15 connector, I assume: https://en.wikipedia.org/wiki/D-subminiature Check the table Normal density / High density / Double density.
17:54:47
nyef
I'm about two steps short of giving up, trying to run in 640x480 for the moment, and ordering another video card for the future.
17:57:22
pjb
http://www.ebay.com/p/apple-21-color-monitor-video-cable-6-feet-long-pn-590-0615-a-db15-to-13w3/1501476426?iid=112318911706
17:59:10
pjb
Not listed on ebay anymore, but there are hundreds of those cable in a box in some second hand computer shop. The problem is to locate it.
17:59:35
Fare
ACTION had his LispM @ 1600x1200, only to find out that the Mac and/or LispM had trouble displaying in 24-bit color.
18:35:13
nyef
I have two VGA adaptors. Both with DIP switches. One a ViewSonic, one a "MacPnP". Neither has managed to coax more than 640x480 out of this card.
18:57:33
nyef
... And, unlike using windows, it seems that I need to reboot every time I change some setting or other. What an odd turnaround.
19:18:15
learning
loop docs say that it takes a [name-clause] http://www.lispworks.com/documentation/HyperSpec/Body/m_loop.htm#loop
19:18:32
learning
can anyone give me a quick example of this? i can't find any and can't guess right
19:19:32
specbot
Examples of NAMED clause: http://www.lispworks.com/reference/HyperSpec/Body/06_agaa.htm
19:34:03
nyef
Well, LispM hardware works, but my video setup is dreadful. And the keyboard, mouse, and screen being on the floor doesn't really help in terms of usability.
20:29:17
aeth
I get a setf not defined error, so that means incf follows from setf being defined? Or is that just SBCL?
20:30:13
aeth
(defun rotation (x) (aref x 1)) (defun (setf rotation) (new-value x) (setf (aref x 1) new-value)) (let ((foo #(0 1))) (incf (rotation foo)) foo) => #(0 2)
20:32:32
aeth
so much of what I am doing is just incf on a much more complicated data structure than my array example
20:33:59
nyef
aeth: Typically, a macro name ending in "F" indicates that the macro takes a "place". "Places" are defined in terms of SETF.
20:35:27
nyef
Largely because SETF was the first thing developed that took a "place", and then it was extended all over the place.
20:40:19
aeth
only somewhat related, but I wonder if CL would be able to handle without a performance cost the addition of a general index accessor, e.g. (access hash-table :foo) (access plist :foo) (access alist :foo) (access multidimensional-array '(0 1 2)) (access sequence 2)
20:41:35
aeth
In fact, slot-value could be considered one of those, but it would probably be better to go through CLOS accessors
20:43:50
Bike
i mean you're either defining an access method or a setf expander, and they presumably look about the same
20:45:36
aeth
the equivalent of that access would be (aref (gethash :from-another-hash-table (svref (gethash :some-simple-vector hash-table) 3)) 0 1 2 3)
20:45:40
nyef
... Not getting what you're driving at. It seems like you want some sort of place semantic for GETHASH?
20:46:59
aeth
nyef: What I mean is, combine aref, gethash, getf, assoc-value, and elt into one super-accessor
20:47:52
aeth
because if it's all one accessor, then you can from left to right chain accesses like . and/or [] in some languages
20:49:58
aeth
This would be especially helpful because some functions (like gethash) put the index on the left, which makes the flow a lot less clear.
20:51:30
aeth
To use a simpler example... (access hash-table :foo) is equivalent with (gethash :foo hash-table) but (access hash-table :foo 0) would be equivalent with (elt (gethash :foo hash-table) 0) where the latter is a lot less clear imo
20:54:03
aeth
More concretely, this is how it is now: (defvar *hash-table* (make-hash-table)) (setf (gethash :foo *hash-table*) #(0 1 2 3 4 5)) (setf (elt (gethash :foo *hash-table*) 0) 1)
20:56:47
aeth
I don't think CL can do that efficiently, though, because access won't know if *hash-table* is a hash-table, an alist, or a plist... and it won't know if the second part is an integer-keyed hash-table or a sequence.
21:03:56
jackdaniel
if you are into this kind of stuff, check https://github.com/rongarret/ergolib (ref operator)
21:10:22
aeth
It looks like ref* does what I suggested, but I don't think it's possible to have a general accessor like that work in CL efficiently.
21:49:49
mrottenkolber
So I am in search of a nice bounded multi producer single consumer queue, that can be implemented on top of CAS? Slightly OT but hey maybe somebody has a favorite.
21:51:43
varjag
since you can implement a linked list with arbitrary insert on top of cas, it should be possible
22:26:40
mrottenkolber
varjag: I have already implemented a variant vyukov’s MPSC queue which is roughly what you describe, but I am stuck on how to adapt it to be bounded
22:27:30
mrottenkolber
i.e. if there is an obvious way to turn an unbounded queue into a bounded one it eludes me
0:37:03
mrottenkolber
by the way, in case I do want to do C-esque modulus addition, is there an alternative to (mod (+ x y) d)?
0:39:20
nyef
Note that using LOGAND and constraining the result to a "natural" width means that SBCL can be somewhat intelligent about optimizing the computation.
0:44:30
mrottenkolber
so what’s the difference between (logand max (+ x y)) and (mod (+ x y) (1+ max)) then?
0:47:09
nyef
The logand version only works for a power-of-two-minus-one, but is also far, far more likely to trigger compiler optimizations.
0:47:42
nyef
... And LOGAND operates in terms of integers, while MOD operates in terms of non-complex ("real") numbers.
0:51:06
mrottenkolber
porting CAS based queue algorithms to CCL for experimenting with Erlangen, possibly to find out that ccl::conditional-store has issues, then trying to work on that?
1:18:29
aeth
(defun foo (x y) (declare (integer x y)) (mod (+ x y) (1+ 255))) (defun foo* (x y) (declare (integer x y)) (logand #xff (+ x y)))
1:19:16
nyef
SBCL probably has an integer-division-by-power-of-2-strength-reduction transform, and from there the modular arithmetic optimizations would kick in.
1:21:19
aeth
SBCL actually doesn't have all the clever little micro-optimizations that can be done with parts of the CL language. It's fast but CL can definitely be made to be much faster.
1:22:18
nyef
Mmm. I've added some cleverness to SBCL myself, and I know of a couple of places where it isn't particularly excellent in terms of optimization.
1:24:25
aeth
Well, one thing that was talked about a few weeks ago is (remove-if-not #'foo ...) vs. (remove-if (complement #'foo) ...) being different, rather than having the equivalent disassembly that many assume. I'm not sure if that's possible, though.
1:25:48
nyef
For them to be fully equivalent in terms of code generated, I'd expect remove-if-not and complement to be open-coded, and I don't know that they are.
1:26:17
aeth
I suppose it would have to be done in all possible foo-not functions that are deprecated (or is only remove-if-not deprecated?)
1:26:21
mrottenkolber
does anyone have a copy of "Efficient Hardware Arithmetic in Common Lisp", http://jcsu.jesus.cam.ac.uk/~csr21/papers/modular/modular.pdf seems down
1:28:15
aeth
I think all the foo-if-not functions are deprecated. It looks like there are twelve of them: http://l1sp.org/search?q=%2Dif%2Dnot
2:53:41
loke
aeth: Yeah, that'll never happen. :-) And even if it did, there is no way the *-if-not functions would be removed.
3:48:37
edgar-rft
loke: what exactly is the difference between "no new standard coming ever" and "infinite time between CL standards"? To me both seems to be the same.
4:04:34
Bike
but time is continuous. but quantum mechanics says it isn't. but special relativity says the concept of a time between events is difficult. but bla bla bla
4:35:56
nyef
... Which some quick digging shows to be a bullshit concept not associated with anything "real".