2022-04-22 05:22:32 =/ is a lil state machine 2022-04-22 10:33:13 Please do tell - I'm still curious. 2022-04-22 10:33:48 It's pretty clear from the results I'm seeing on my tests that it has that kind of behavior. 2022-04-22 10:34:00 It's clearly not "just a calculation." 2022-04-22 10:37:47 There seems to be enough "rigorous consistency" in APL to really pique my interest - I've always liked things like that, because they sort of provide a "playground" for logical thinking. But there also seems to be a dash of "arbitrary" (which can still be rigorous). 2022-04-22 10:38:22 Or maybe I just haven't figured out the things that seem arbitrary yet - haven't seen the "rule" yet. 2022-04-22 11:46:58 APL is more consistent than standard math in some ways. 2022-04-22 11:47:11 Precedence, for example, is always positional. 2022-04-22 12:12:24 Yes. I picked that up from Iverson's paper. 2022-04-22 12:13:19 I'm not sure I always see the "relationship" between a symbol's unary meaning and it's binary meaning - I'd like it if that was extremely consistent. Maybe it is and I'm just not seeing how yet. 2022-04-22 12:13:39 Sometimes they seem to fit together well; just not always. 2022-04-22 12:14:35 for example? 2022-04-22 12:14:40 anyway, state machine 2022-04-22 12:14:42 I knew someone would ask that. 2022-04-22 12:14:55 its more easily demonstrated with ones and zeros and scan 2022-04-22 12:15:23 basically, you can imagine the state for =\ being a single bit 2022-04-22 12:15:42 I can't give you a "best" example. The only one that's coming to mind at the moment is one that I didn't have too much trouble swalling. The ceil and floor operators - sometimes they truncate to an integer and sometimes they don't. 2022-04-22 12:15:56 Like I said, that one isn't too painful to me, but it IS a different behavior. 2022-04-22 12:16:15 I do see, though, that the binary behavior just isn't really applicable when there's only one argument. 2022-04-22 12:16:32 Max or min of a single number? Could just "skip it." 2022-04-22 12:17:58 the behaviour of the =\ state machine is more accurately described with its not variant 2022-04-22 12:18:02 If I think of any others I'll let you know - I'm just recollecting "thoughts" I've had over the last few days. 2022-04-22 12:19:44 ACTION uploaded an image: (4KiB) < https://libera.ems.host/_matrix/media/r0/download/chat.unix.lgbt/018929da308a460f1c9e3c384542407fa6d98572/image.png > 2022-04-22 12:19:53 essentially 2022-04-22 12:20:08 if it recieves a 1, it changes state 2022-04-22 12:20:13 and starts producing 1s 2022-04-22 12:20:19 or stops producing them 2022-04-22 12:20:50 'LEAVE' should be used only with definitive loops? 2022-04-22 12:21:46 this behaviour produces the sirpenski triangle in certain scenarios 2022-04-22 12:23:10 ACTION uploaded an image: (29KiB) < https://libera.ems.host/_matrix/media/r0/download/chat.unix.lgbt/d5ea9d92a878a03d02d919384911e3cda346f8be/image.png > 2022-04-22 12:23:13 this is of course, K 2022-04-22 12:24:00 APL doesn't have an analogue for monad\ in K, which is something called scan-fixpoint 2022-04-22 12:28:01 Oh wow - that second image is really something. 2022-04-22 12:28:20 yea 2022-04-22 12:28:34 To bad it won't run on mine. :-) 2022-04-22 12:28:43 scan-fixpoint is a lovely primitive 2022-04-22 12:28:48 See, that's what I mean, though, when I say "I sense huge potential." 2022-04-22 12:29:11 Being able to get at large structures like that, in such a simple way - that's cool. 2022-04-22 12:29:59 have you encountered ⍣ yet? 2022-04-22 12:31:33 its called the power operator 2022-04-22 12:31:45 give it a numerical right arg and it'll do something that many times 2022-04-22 12:31:55 No, I was tinkering with ⍨ and ¨ last night, though. 2022-04-22 12:32:00 however 2022-04-22 12:32:03 if you pass it ≡ 2022-04-22 12:32:08 as a right operand 2022-04-22 12:32:12 it gets very fun 2022-04-22 12:32:19 it'll do something until it stops changing 2022-04-22 12:32:26 :-) 2022-04-22 12:32:45 Well, this definitely gives me new angles to look at my =/ tinkering from now. 2022-04-22 12:34:22 ACTION uploaded an image: (2KiB) < https://libera.ems.host/_matrix/media/r0/download/chat.unix.lgbt/97d6f621ae8082a971c71d1393dfa289fe45d06d/image.png > 2022-04-22 12:34:25 i really wish APL had currying 2022-04-22 12:34:33 add one 7 times 2022-04-22 12:52:05 been looking into the complexity of implementing a BitGrid cell 2022-04-22 12:54:29 so basically 16 input MUX whose selector lines are the NEWS von Neuman neighbours cell output 2022-04-22 12:55:11 each input of the mux being a four bit bus and hence the output too 2022-04-22 12:56:19 those mux inputs come from a 16x4 sram memory 2022-04-22 12:56:49 so 64 sram cells 2022-04-22 13:04:10 Yeah - 4 output bits for each of 16 possible input bit patterns. One 64-bit cell for configuration. 2022-04-22 13:04:45 I figure that's how it would look to the outside - one 64-bit word in your "configuration space," one word for each cell. 2022-04-22 14:06:32 Zarutian_iPad: I felt like the most straightforward way to make a BitGrid chip would be to start with an existing RAM chip design, where you already have a logic structure that "houses" all the config bits - then just "spreread it open" a little and drop the selectors in there and interconnect them. It would be four 16-1 selectors for each cell. 2022-04-22 14:07:06 That makes it sound "easy" - I'm sure there would be a TON of "sub-digital" issues to cope with. But that's about the size of it as far as I can see. 2022-04-22 14:21:15 eris: I'm still really tickled with that second image you posted earlier. The one with the fractal pattern. 2022-04-22 14:29:18 :) 2022-04-22 14:38:43 eris: So in this expression: 2022-04-22 14:38:49 'λ' (4.5 2.2) 'string' = 'r' 2022-04-22 14:39:10 everything to the left of the = sign forms a list and that list is the left operator of =? 2022-04-22 14:39:21 Because stranding binds more tightly than function application? 2022-04-22 14:39:53 And the the = 'r' is applied to every scalar in that left list structure, because of "scalar pervasion"? 2022-04-22 14:40:37 So you wind up with 0 (0 0) (0 0 1 0 0 0) 2022-04-22 15:01:06 KipIngram: yeah but the question is how that configuration space is accessed 2022-04-22 15:02:49 is it via row and column select and word buses or hilbert curve snaked spi/jtag ? 2022-04-22 15:04:27 the former allows for usage of BitGrid blocks as memory but can eat up die space both polysilicon and metal layers 2022-04-22 15:05:47 hmm.. no I suspect that they are mostly equiv in that regard as spi/jtag needs extra sram cells for the spi/jtag chain 2022-04-22 15:07:19 stranding binds tighter yes 2022-04-22 15:07:41 so doing the former is both cheaper and more versatile 2022-04-22 15:09:50 heck one could even use the same address decoding for readonly debug access to each BitGrid cells inputs 2022-04-22 16:04:29 I assumed it would be accessed by the ram chip's existing design. 2022-04-22 16:04:39 That's why I wanted to "start with a RAM chip." 2022-04-22 16:04:59 All of the circuitry to WRITE to the config space is exactly what's already on the chip. 2022-04-22 16:05:10 the selectors would be connected directly to the data bits themselves. 2022-04-22 16:05:44 Rather, the 16 inputs of the selector would come from the existing data cells in the RAM - the four select inputs would come from the neighbors selector OUTPUT. 2022-04-22 16:06:19 I'd leave all of the stuff that lets you read and write the RAM exactly as it is, logically. 2022-04-22 16:06:31 We just need to make room for the selectors and interconnect them. 2022-04-22 16:07:48 Heh. "Just." I shouldn't say it like that - LOGICALLY it's a "just," but so far as engineering goes it might be pretty hard. I don't know about delicate RAM design issues enough to say. 2022-04-22 16:08:14 eris: I'm reading this right now, and so far it's working really well for me: 2022-04-22 16:08:16 https://mlochbaum.github.io/OuterProduct/commentary.html 2022-04-22 16:10:34 Uh oh. I found something I'm not immediately understanding. 2022-04-22 16:10:46 3.5 ⌊ 4.7 2022-04-22 16:10:47 3.5 2022-04-22 16:10:49 I get that. 2022-04-22 16:10:58 two-operator ⌊ is "min." 2022-04-22 16:11:22 Oh, wait - never mind. I misread - it makes sense. 2022-04-22 16:28:18 mlochbaum also made an array lang :) 2022-04-22 16:32:29 So, I get why 6 +/ 1 2 3 4 5 "can't do anything," since there aren't 6 items in the array to window over. But it returns something. Then 7 +/ 1 2 3 4 5 throws an error. 2022-04-22 16:32:41 What's special about "one too many"? 2022-04-22 16:33:49 I guess windowing is a feature of function created by having / operate on a function? 2022-04-22 16:33:57 "any function" 2022-04-22 16:40:46 Operator actions come before right to left evaluation? 2022-04-22 16:41:33 This: ÷⍤+/ wound up behaving like (÷⍤+)/ as far as I can tell. 2022-04-22 16:42:22 operators bind tighter yea 2022-04-22 16:42:32 it goes stranding then operators then rtl 2022-04-22 16:45:58 Good - I'm starting to "see" some of these things. :-) Making more sense. 2022-04-22 16:47:57 Oh, HA HA. Precedence order was the very next slide. 2022-04-22 17:33:58 hahaha