« first day (1230 days earlier)      last day (1408 days later) » 

12:22 AM
@Bubbler I'd say go for "Bracket indexing" and "Index (function)", but this is a weak preference. The most common names are just "indexing" and "Index", as far as I can tell. The main reasons to call is Squad something instead of just Index would be that Squad works better in text (dubious) or Index is more ambiguous (but currently I can't find any function other than APL2's ⌷ called Index).
By the way, the genealogies seem to be Squad (⌷) from APL2, Pick (⊃) from NARS, and From (@) from SHARP is the same as J From ({) and similar to Select. Assuming SHARP's definition matches the later SAX.
Choose indexing is from NARS. Reach indexing might be Dyalog?
 
 
2 hours later…
ngn
2:55 AM
eskimos have 100 words for snow, aplers have 100 words for indexing :)
3
 
 
2 hours later…
5:18 AM
@Bubbler Don't forget Replicate/Compress.
 
 
3 hours later…
8:18 AM
Now we have under 400 wanted pages :)
 
 
1 hour later…
9:28 AM
hello
 
@user95636 Hi Nic.
 
@Adám hello
 
@user95636 Welcome to the Orchard. Looking forward to have your lesson next week.
 
9:43 AM
@Adam
https://tio.run/##bZK/ctNAEMZ7PcV2J48dB9tBBDwUsZJAgIQQk4TAUJyti3ygf@jOkh2goQiJBzNQMKloGOgoYXgAv8m9iNk7KYMZ2EIj3e73229XR5NgyRvTIPbnc8BQZ29BjqQ6/ZBzTw6gQwVzVoBHUrR7XD/MQbs/oKlgsh2ZFwtM6AJU1tT03LaNfnaxWlHTH82KmnzVDFgMNf0MGevLOBUQHxs1lKQCiyz17sxW5190rjL75cD/QnOiYdhjqcEUjv/yZY6Q1lSTb9pcga852pvtzC6K74o6/WhMGGJCvcJSznEPJyyNBcgYfCaBQjgMJE8Cphs6pqxsVe4Fe5G1jru@sXnr9tadu/e2d@7vPtjrPtw/OHx09Jj2@h479gf82fMgjOLkRSrkMMtH45MrjWZr5apzbfV6dZmUyOJ3lOAnjWoxzdM/2Rqm7darpXLjuC69aj0buUn@2ZSeK@RC8MiH3liyckAstcoLYOUpTZD5knhU0hs8pD5bFplfHYVB@f9rpNa4vBvq/ad9t4vsn6/nc7IVcenSoWA5HRMgB5zlRJe4R0TgCEkSxJJYi1Wo/G4J3
 
RGS
@user95636 the Y-axis starting at 1 is rather unsettling :O
This fixes it:
https://tio.run/##bZLNctMwEMfvfoq9yZm4aZMUt5Dh0LgttNAPGtpSGA5KrDoCf2EpdlLgwqG0GcLAgemJCwM3jjA8QN5ELxIkWR3CwB48tnb/v/3vWjgNF/wRDpNgNgMZ4uIt8CEX5x8K6vM@tDEj7jLQmLNWl6qHPmj1@jhjhLdi/WKBDlUglY6YXNq21k@vViti8qNREeOvigHzISafISc9nmQMklOtBkMqsZIl3l3Y4vKLylWmv1z4XyhOPIi6JNOY0vFfvvSRpDXE@JsyV@IdV3mz3elV@V0R5x@1CU1MsV9aKqjcwxnJEgY8gYBwwBANQk7TkKiGri4zrcxeZC@01vbWNzbv3N3avnd/Z3dv/8FB5@Hh0fGjk8e42/PJadCnz56HUZykLzLGB3kxHJ0t1RvN5RvuyurN6iIyyPJ3GPCTerWc5umfrCPTdvPVgtm4XJdatZoN3Ub/bErNFVHGaBxAd8SJGVCWWuYCWEWGU8l8iXzM8S0a4YAssjyoDqPQ/H8HOfXruyHefzr0OpL98/VshrZiyj08YKTAIwToiJICqRLvBDE5QpqGCUfW
But doesn't look perfect because there is an empty bar on the left... I'm just playing around with it, I'm assuming there is a proper way to take care of this?
 
@RGS Of course there is. You'll see next week!
 
RGS
@Adám alright, I'll wait. Having sp.DrawBarChart ⊂0 1 3 2 0 instead of sp.DrawBarChar ⊂0 1 3 2 already looks better, but still off
 
You could spend your life improving it : here use BarChartStyles.ForceZero ( https://sharpplot.com/BarChartStyles.htm )
https://tio.run/##bZK/ctNAEMZ7PcV2J48dB9tBBDwUsZJAgIQQk4TAUJyti3ygf@jOkh2goQiJBzNQMKloGOgoYXgAv8m9iNk7KYMZ2EIj3e73229XR5NgyRvTIPbnc8BQZ29BjqQ6/ZBzTw6gQwVzVoBHUrR7XD/MQbs/oKlgsh2ZFwtM6AJU1tT03LaNfnaxWlHTH82KmnzVDFgMNf0MGevLOBUQHxs1lKQCiyz17sxW5190rjL75cD/QnOiYdhjqcEUjv/yZY6Q1lSTb9pcga852pvtzC6K74o6/WhMGGJCvcJSznEPJyyNBcgYfCaBQjgMJE8Cphs6pqxsVe4Fe5G1jru@sXnr9tadu/e2d@7vPtjrPtw/OHx09Jj2@h479gf82fMgjOLkRSrkMMtH45MrjWZr5apzbfV6dZmUyOJ3lOAnjWoxzdM/2Rqm7darpXLjuC69aj0buUn@2ZSeK@R
 
@user95636 You could spend your life improving it : here use BarChartStyles.ForceZero
 
RGS
9:53 AM
@user95636 heh, nice
https://tio.run/##bVLLUhNBFN3PV9xdJ5UQTIIjmnJBAlFQEImAYLnoZJpJ67yc7mQyqBsXCClj6cJi5cbSnUstPyB/0j8Sb/dMilB6F1PTfR731TTylpyUeqE7mwGGOn8PciTV2aeEO7IPTSqYvQI8kKLR5fpjLhq9Po0Fk43A/FhgQhNQWVaTi0LB6KeXq0U1@VUrqvF37QGLoSZfYch6MowFhCdGDblTZote6sN5QV1801hx@seG/4X2CQZ@l8XGJqv4Wl3mCt1qavxDF5fZl21dW8GeXmbnojr7bIowjhF1spISjnM4ZXEoQIbgMgkU/IEneeQxndA2tDxVPhfMRdaarfWN9r37m1sPHm7vPNp9vNd5sn9w@PTomHZ7Djtx@/zFS88PwuhVLORgmIzS0xvVWn3lpn1r9XZpmeSW2Tpy42fVUtbN8yu0jHCh/mYpnziOS49a90bukn8mpfvyuRA8cKGbSpY3iFQrfwBWEtMIPV8Th0p6h/vUZcti6JZGvpfvv0zK1fnbUB@/7Lc66P377WxGNgMuW3QgWEJTAuSAs4RoSuuICGwhirxQEmuRhcqfltAJkbazcQh
 
@RGS If you put the newline at the end, it doesn't render.
 
RGS
@Adám what do you mean? I included a newline before the link to force the message to be a fixed font one, so I could paste the really long TIO url
 
@RGS Yes, but I see a blank line. Put it at the end of the url instead.
 
RGS
@Adám ahhh ok
^ that was the link; thanks for the heads up, the link showed on my screen
 
 
3 hours later…
RGS
1:08 PM
@Adám following up on my weird namespace issue, do you have any clues about what happened?
 
1:41 PM
@RGS Right, let me have a look.
 
RGS
2:03 PM
@Adám of course; I coded around it, so it isn't critical
I am just intriguided
 
2:20 PM
@RGS I can't see any issue:
      ⎕FIX'file://C:\Users\Adam.DYALOG\AppData\Local\Temp\Contest2020.dyalog'
      )obs
Contest2020
      Contest2020.Problems.⎕NC'g' 'CheckDigit'
3.3 3.3
(I can get their definitions and use them too, but didn't want to show here.)
 
RGS
@Adám (of course)
@Adám well this is what I did:
opened a fresh interpreter window, File -> Edit text file, opened the file and fixed it
      Contest2020.Problems.⎕NC 'g' 'CheckDigit' 'DiveScore'
0 0 3.2
Using your steps gives the expected result:
      ⎕FIX'file://Phase2_2020/Contest2020_2.dyalog'
      Contest2020.Problems.⎕NC 'g' 'CheckDigit' 'DiveScore'
3.3 3.3 3.2
 
2:37 PM
@RGS "Fixed it"? Can't repro. Fresh Dyalog, File>Edit Text File…>etc then File>Fix whole script. Works after that.
 
RGS
@Adám I confirm this
by "fixed it" I mean "I pressed CTRL+F" which I set under Options > Configure > Keyboard Shortcuts to the S2 shortcut, "Fix script but remain in editor"
 
@RGS I have no idea what S1 and S2 do. Just use EP and FX. (I know the descriptions are misleading.)
 
RGS
@Adám worked like a charm and FX works even "better" because now I can fix the file without even having to touch it.
For S2 to work I'd have to make any change in it (which I'd often do as hitting spacebar and deleting the new space I'd just inserted)
 
I'll ask John what S1 and S2 are.
 
RGS
@Adám Alright, I'm interested in knowing what they really do... Especially because it feels odd that I have to do what I just described in my last msg ^
 
3:09 PM
@RGS John didn't immediately see what was going on, but I've added a task to his to-do list to investigate and correct the descriptions. (Issue number 18223.)
 
RGS
@Adám Alright, thanks for your help and for helping me figure out a solution. If needed, John can contact me if the bug (?) is hard to reproduce in his machine or if he wants me to give system details, etc.
 
I've included your name in the issue. I suspect it won't be hard to reproduce though. We looked at the C code together, and there, the difference is obvious (one of them checks of a certain flag, and the other one doesn't) so he just has to go look for what that flag is.
 
RGS
@Adám ok great!
There was a time when I thought it was curious that Kevin Cruijssen had found a bug in Java 8 (or 9 or 10, can't recall) but now I have found bugs in Dyalog APL so now I feel regular people can also find bugs in real-world software
 
Don't you use Windows‽
 
RGS
@Adám yes; do you mean that because Windows is full of bugs?
 
3:17 PM
Yeah. Certainly Windows Explorer keeps crashing for me.
 
RGS
@Adám not for me... but you are right, just the other day I asked you if you knew anything about that bug with the keyboard layouts
nevermind then, I retract my previous statement about Kevin ⍥
 
But yeah, some bugs are more high-profile than others. John has told IBM about bugs he found in AIX!
 
RGS
@Adám I just googled AIX and found it to be a proprietary OS but other than that I can't grasp the meaning of your msg; were those bugs really hard to find?
 
Also, this S1/S2 vs EP/FX is possibly not a real bug, but is just ill-described, and actually fulfils some role we're not aware of. When people are hired or interning by Dyalog, we eagerly await their first "syserror" (APL discovers things are bad, and quits, optionally with a memory dump) or crash (APL simply disappears without trace).
@RGS AIX is supposed to be a super-stable OS for high performance mission critical applications.
 
RGS
@Adám regarding the last half of that msg, I already had my fair share of those... not sure if you already filed an issue with it, it is something I can reproduce really well
@Adám heh, good guy John! Maybe IBM should hire him? :P
 
3:23 PM
@RGS If you have aplcores (the memory dumps), you can zip them (they compress very well) and email them to support@.
 
RGS
@Adám should I trigger the bug once and send one of those aplcores, then?
 
@RGS Sure. With a description of what you did to trigger it, if you can.
 
RGS
what I actually meant was: is 1 enough?
 
Yes, if it is always the same (kind of) thing happening.
@RGS Nah, they just appreciate it, and fix it in no time. We're a long-term costumer of IBM (and they are of us too). We used to do sales for IBM, and they sell a system Morten developed.
 
RGS
@Adám oh that is interesting
@Adám (do I create "a process dump file"?)
 
3:28 PM
@RGS Probably not necessary. The aplcore is enough for now. If support can't repro, they might ask you for a processdump.
CMC (just kidding): Make Dyalog syserror.
I can do it in 6 bytes, with no tricks, just officially supported code.
 
@Adám It's intentional, not officially supported.
 
@Marshall No, not that one. I know that's intentional and not supported. I have another 6-byter using just normal primitives and arrays.
 
RGS
@Adám email sent ○/
@Adám a proper crash, right? you are not talking about WS FULL things or 1÷0 right?
 
@RGS No, we're talking APL generating an aplcore.
 
RGS
@Adám oh ok, I have no idea and aplcart doesn't know either
 
3:42 PM
@RGS Well, you did have a way to cause that. Probably a bit more than 6 bytes, though.
@RGS No, I don't want to document bugs, in case they get fixed.
 
RGS
@Adám more than 6 bytes and it involved using the editor and saving files to the system and whatnot
 
:-D
 
RGS
now I am curious... about @Marshall 's solution and the one you say you also have
 
Can't tell you. It is there for a couple of purposes, one of them being the ability to quickly test APL's ability to create aplcores.
 
RGS
@Adám oh really? You literally cannot tell? ⍥ if so, your CMC is unfair :-P
 
3:52 PM
@RGS Firstly, I did say "just kidding", but I do have a 6-byter I can tell about. It just happens to be that the internal testing feature also is 6 bytes, so Marshall thought that was what I was referring to.
 
RGS
@Adám I know, hence my :-P! But I am curious about the "legal" 6-byter
is it something I can be led to with hints?
 
Hint 1: uses
 
RGS
if I let it run for enough time, is it ,∘1⍣≡⍬ ?
 
Nope, that'll just WS FULL.
 
RGS
@Adám hm ok... thing is, I am not aware of what type of things can make the interpreter crash, as I'd expect all code I write with primitives and arrays to either execute nicely or produce an ERROR of some sort...
Just with ⍣ I don't think I'll get there
 
4:03 PM
@RGS Well, yeah, it shouldn't crash. it is obviously a bug we haven't gotten around to fixing yet.
Hint 2: uses ⍣¯1
 
RGS
@Adám so is it of the form f⍣¯1 and f takes up 3 bytes? or is it a⍣¯1⊢b for some clever a and b?
 
@RGS A derived function isn't actually run, so that's highly unlikely to do anything. However, ⍺⍣¯1⊢b wastes a byte on a no-op ().
 
New development in BQN theory: an elegant Group function. github.com/mlochbaum/BQN/blob/master/doc/group.md
 
4:31 PM
@Marshall last part of this - i was very curious about exactly that case, and it's still awfully long for a pretty useful expression
 
RGS
@Adám I can't seem to figure out the structure of the 6-byter then
 
i find the developments this year in the APL community fascinating.
 
@dzaima (i see 2 ways to solve that; 1: new primitive with 3 args as that function (but those are few and i doubt it'd look (visually) pretty); 2: a much less pretty "allow an extra trailing number to 𝕨" that's "just there" for padding; 3: just leave it and suffer the consequences)
 
@dzaima If you use it much you can just define it though. I think that implementation is one of the cleaner ones using array primitives that I would consider natural.
 
@Adám I've been following, I think its a very interesting idea.
When I have some time, I want to get it set up and test functionality.

talking w/ Gordon (apl-on-beam), it seems like an 'APL theory' would be helpful. Something kindve like an implementation spec (i should check out ISO spec).
 
4:43 PM
If I add dictionaries I will almost certainly include a K-like Group.
 
how to store arrays, how to operate on them, what the syntax looks like etc
 
@cannadayr ISO doesn't tell you how to implement things, and I don't think it's a good guide for a modern APL. I wouldn't bother personally.
 
@Marshall that is indeed awesome and i'd still leave it regardless; it's not that i use something like that much, but i wouldn't say i use it much less than what is already good for
 
RGS
@Marshall what should someone refer to if they wanted to implement APL?
 
@dzaima The trailing number is fairly reasonable. I might use that.
 
4:46 PM
maybe not an implementation "spec", but a "how to write an APL" - or at least the in-community understanding of the nuts and bolts fit together
 
k-style dicts is something I miss in Dyalog. Sure -- it can be worked around, but not as elegantly.
 
whether that exists as a codebase or not (gnu apl or J most likely)
 
@cannadayr An Implementation of J (jsoftware.com/papers/AIOJ) is the best I can think of off the top of my head. It should be paired with general interpreter implementation resources though. J has some significant weaknesses that come from Roger not knowing the broader literature very well.
@cannadayr There's also a series on implementing J in Haskell that starts here: www-cs-students.stanford.edu/~blynn/haskell/jfh.html
 
thanks these look like they might be very helpful
 
@dzaima The mathematician's solution is that the result of ⊔ should be an infinite array with empty groups forever. That requires a lot of support however, and it still might be troublesome.
I guess a sort of compromise would be to say the result always knows its prototype is an empty group, so you can overtake it safely.
 
4:56 PM
@Marshall that's indeed another thing i thought of, but as you said it doesn't really 'solve' it without much extra effort
@Marshall i don't think it's worth burdening arrays with that. For dicts, though, having a default value might make sense
 
@Marshall how are you bootstrapping BQN? is it using your bqn2ngn implementation?
 
@cannadayr Yes. I just have BQN2NGN/apl.js symlinked to ~/bin/bqn, and then I can call c.bqn as a unix script.
 
@Marshall i've noticed this note. do you plan on working more on fonts?
 
@dzaima Yes. I'll keep working with DejaVu but at some point will start over and try to do those characters properly instead of mangling ones imported from the proportional-width version.
I also want to do more work to unify the characters—I did a little with the circles in the current version, but it was all very ad-hoc. For instance ∘ and ⟜ should have the same sized circle.
And ⍋ should match with ∧, and so on.
 
5:13 PM
i also wonder how helpful it would be to try and use the existing APL font (as much as reasonable). just because it already has a lotve ideas associated with different characters (⍺ ⍵ for fn args vs X/Z), as well as a UTF8 block
and keyboard memory
 
ngn
@Adám i ran all i-beams up to 1e5, wasn't disappointed :) 1300⌶0
 
@cannadayr I don't like the look of APL385. But it would be perfectly reasonable for other people to modify other fonts, if they like the BQN character set.
 
i think preventing font fragmentation is important, but if BQN represents a significant enough break from existing language it might be appropriate (im not the one coming up with the ideas or writing it).
@Marshall APL485? ;)
having a contiguous keyboard set that uses as much overlap w/ APL as reasonable I think would be helpful. I am planning on setting bqn up and testing it out, but the keyboard (and muscle memory) will likely be a hurdle.
but i suppose it will be easier if characters are swapped vs mved around in semantic meaning and on the keyboard
 
@cannadayr Not sure why you should say that. Is there a problem that comes from people using different fonts? As far as I'm aware the BQN characters should render similarly across the fonts that have them (no ⍲⍱ for example).
@cannadayr Keyboard layouts are a different issue. I more or less started over with mine, as I find the existing APL keyboards unintuitive. Putting double-struck x, f, and g on those letters also makes it hard to maintain some of the patterns.
 
@all @Adám There's been lots of really active and interesting discussion in the room lately! Might we have a Zoom/better-similar-software meeting/chat tomorrow, as was tried recently?

(I know you said there wasn't much interest, but I have a feeling there may be now!)
 
5:26 PM
@Marshall i however like APL385, so i guess i wouldn't be contested if i tried to extend it
 
@AviF.S. Sure.
 
i am not enough of a utf8 guru to comment on the specific technical challenges of using different fonts in the same text (might be fine).

using the characters you want sourced from utf8 makes sense.

but keeping it as close as reasonable to existing APL font also seems important. at least for me personally, ive got a lot of muscle memory trained to type in APL, theres a several month transition period if the changes are drastic enough
 
If anyone is interested in extending APL385, please contribute to APL386
 
i dont think keeping everything is important, backwards compatability is uhh.. made to be broken, but fonts represent a significant amount of human experience.
 
Super exciting! Is there way you can advertise/pin a comment now to let everyone know?

Worst case: Maybe you (or I'd be happy to do it!) could write a message with the time/date/info in bold/italics & with some caps, and then everyone could star it to pin it on the side?
 
5:29 PM
however if its well thought out and structured and takes enough inspiration its not a dealbreaker for me
 
@AviF.S. (In case there's any doubt, I'd join this)
 
@Marshall Great, was really hoping!!! I was thinking most of the conversation would be about your BQN. Seems you're responsible for the latest burst in activity I was just referring to :)
 
@cannadayr Do you mean the choice of characters to use in the language (what I would call the "character set") or the images used to display characters ("font")? If the former, then your questions make more sense to me.
 
sorry, character set.
"character set fragmentation"
 
Okay.
 
5:32 PM
how its displayed is an afterthought. I mean the characters included in the lexer and how they exist in UTF8 and on the keyboard.
 
Technically there are no issues because everything is Unicode now, different languages just decide to use different parts of it.
 
right and UTF8 is uniformly implemented on different devices
*is not
(sry doing 2 things hah)
 
@cannadayr That's one of the issues I try to address with Prime. APL has a certain beauty that BQN (imo) lacks. Also, lots of resources like APL Wiki would be still (mostly) apply to Prime.
At least APL' looks like APL.
 
i dunno if id go thaaaat far, beauty can take time to come around to
 
APL looks fantasy, BQN looks sci-fi.
 
5:36 PM
i personally prefer the fantasy aplish, but like I said, im not writing the language so my asthetic isnt the highest importance
its also something that can be addressed bit by bit as time goes on
i dont mean to bike shed somebody doing work im not prepared to do
 
@Marshall Hahaha, soooooo true!! Never agreed more :)
 
@AviF.S. Yeah, I can pin messages, but what shall we call this?
 
Alright, IDK what to say really but here's the draft. Don't star it please yet, just hoping you'll proof it, before I send it in bold with caps to be starred:
 
whats the zoom call topic?
 
@Adám Whoops, haha! I assumed you couldn't and was about to send my draft!
 
5:38 PM
Regarding backwards compatibility in general, my goal with BQN is not to follow APL as a goal in itself but to figure out what makes APL as a language so great and do that. For some things that don't matter so much, like the choice of glyphs for scalar functions, I will prefer APL or mathematical tradition, but generally being backwards compatible isn't a goal.
 
I don't know if we need a topic, but if we do, definitely BQN with @Marshall
 
i would be very interested if you can nail down a time.
 
I was thinking of just naming the recurring event.
 
I think "Cooking BQN" is the requisite catchy title.
 
That might be this week's subject.
@cannadayr 15:30 UTC tomorrow (and every 2 weeks).
 
5:41 PM
Ah, didn't know we were going for a series already.
 
It's the reason the room has been so active and full of interest in the past few days, as far as I can see! Also, they've [Marshall] said they'll be there whereas they've also said they won't be that active most likely in the room for most of the early stages of BQN's development. So this is our chance!!
 
no meeting then, Im in :)
will the zoom info be posted here when the time comes?
 
I was thinking of using 8x8.vc to keep the entry barrier low, and not have a 30 min time limit.
 
@AviF.S. "Early stages" lasts probably 1-2 weeks, so it's probably less of a big deal than you are thinking.
 
@Marshall I sure hope so! But even if it doesn't happen every two weeks, that's likely when it'll happen, as it's the established time that seems to work reasonably well for everyone for APL cultivation!
 
5:42 PM
@AviF.S. It is one hour later than Cultivation.
 
@Marshall Ah, well even better for us!
@Adám Uh oh... Do I have the wrong time in my calendar for Cultivations?
 
Cultivation is 14:30 UTC, which is 15:30 BST.
 
are the zoom sessions recorded? (or recordable)
 
@Adám I just noticed that; that's what happens when one doesn't pay attention to the units :p
 
@cannadayr If we use Zoom, then I can record. I doubt it for 8x8.vc since it is entirely in the browser.
 
5:48 PM
@Adám One can still record the screen and stuff, though!
Quick question: How to index 'each', eg:
       'ABCD' ??? (3 1 2) (1) (4 1 2)
'CAB' 'A' 'DAB'
 
@Adám It can at least record and live stream on youtube, so it can likely record in other ways. Sharing screens works, and we could try a different Jitsi Meet instance.
 
(If one simply needs ∊ it, and then ⊂/⊆ it back together: Of that I'm capable! Hoping there's a better way, though...)
 
ngn
@AviF.S. quick answer: ⊃∘'ABCD'¨¨(3 1 2) (1) (4 1 2)
 
@ngn Huh! What an answer! Doesn't look like it's on APLCart! Worth adding @Adám, or is there a better way you already have?
 
@AviF.S. It is a pretty obvious application of ¨ imo.
 
5:56 PM
@Adám Ouch! Haha
 
@Adám also APLCarts structure means you can't add ⊃∘X¨Y
 
But this is exactly what I want the depth operator f⍥k for.
 
@Adám More obvious than SortC⍋D & C⍒D, though?
@dzaima What do you mean? As long as you add a second ¨, why doesn't it work?
 
@AviF.S. APLCarts syntax (almost) always has X on the far left and Y on the right (though there are a couple outliers, hmm)
 
@dzaima @Adám Hmmm, I hadn't realized that was a restriction... But I'm also terribly confused about this notion of being too obvious for APLCart, when most entries don't require more than a few primitives. I thought it was precisely for simple idioms that do simple things...
 
6:02 PM
@AviF.S. Sure, but how about 'abc' 'def''cba' 'fed'?
 
@Adám I suppose you're right; it just wasn't obvious to me because there are so many indexing methods and the wiki is still not complete on the issue... I just knew that bracket indexing couldn't be manipulated as a normal operator, and the squad function was being stubborn. The pick function hadn't yet occurred to me...
 
@Adám ⊃∘A¨ (or even just ⊃∘A (or if you're being more general, actually ⌷∘A)) is pretty useful, and composing compositions and ¨ isn't exactly trivial (especially when one would think APL would have a built-in for it (looking at you )), and APLCart is targeting pretty new people to APL too
 
This is a draft for proofing; please don't star/pin it yet:
Cooking BQN with @Marshall: Join us 3:30 UTC on Tuesday (6/9) with 8x8.vc to discuss the up-and-coming APL dialect!
 
also, "pick each", "pick/get multiple" and "multiple elements" don't give much in APLCart (i'd expect some subset of ⌷⍨∘⊂⍨, A[B] and ⌷∘A¨B for at least one of those)
 
@dzaima Agreed, just realized that it also works with ⌷∘, so it looks like it wasn't just the indexing that tripped me up but how to 'each' a right argument. I've been trying to figure it out for other uses for a while. And for some reason, currying hadn't occurred to me! What I had tried unsuccessfully were X¨fy & Xf⍨¨Y, which seem reasonably intuitive...
 
6:15 PM
@AviF.S. f∘A¨B could also be B f¨ ⊂A; A∘f¨B could similarly be (⊂A) f¨ B
(@Adám APLCart requests for those - "each left"/"each right")
 
@dzaima My goodness, thanks a bunch! Would've never occurred to me!
@dzaima Haha, so to do this example you need two encloses! I can't say I really understand it!
      (3 1 2)(1)(4 1 2)⌷¨¨⊂⊂'ABCD'
┌───┬─┬───┐
│CAB│A│DAB│
└───┴─┴───┘
 
(dzaima/APL has primitives for each left/right - and - examples)
 
@dzaima Lastly, in these case were ⊃ & ⌷ work equally well, is one preferred to the other?
 
@AviF.S. i prefer because i'm used to it and it feels prettier, but both of those are very awful reasons, and i'd suggest using because it also works for higher ranks
 
@dzaima Very neat!!
@dzaima Haha, thanks a bunch! Sounds good
@all Also, usually 'eaches' are made more efficient by composing so they need be 'eached' only once (so far as I understand). How to do that with something of this format:
      2ר×/¨⍳4
2 4 6 8
      2×∘×/¨⍳4
RANK ERROR
 
6:24 PM
@AviF.S. 2×∘(×/)¨⍳4
 
@dzaima Ugh, look at you go! Thanks!
 
@dzaima So after alllllllll of that about APL letting go of operator precedence and "You'll never have to worry about it ever again, just read from right to left!" Yet another operator (∘), breaks the rule...
 
@AviF.S. all operators bind from left to right actually. ¯\_(ツ)_/¯
 
@dzaima ??? Oh geez, I've some refreshing to do, that's right! Just when I thought I was starting to understand it...
@dzaima What an excellent explanation!! That out to be pinned somewhere or on the wiki!
 
RGS
7:11 PM
@Adám I give up
 
Announcement: Meetup 2020 Jun 9, 15:30 UTC at meet.jit.si/APLOrchard. Password is result of +/4 5 1 6 8 in APL/J/K. "Cooking BQN with Marshall"
@RGS ⍕⍣¯1⍕⍬
 
RGS
@Adám weird bug ⍥
 
Yup.
 
RGS
Just to be sure, ⍕⍣¯1 should be ⍎, shouldn't it?
 
@RGS Not really. It tries to find an array such that executing it gives the given character vector. E.g. ⍕⍣¯1⊢'1 2 3' gives 1 2 3 but ⍕⍣¯1⊢'1 2.0 3' DOMAIN ERRORs because there's no such numeric vector.
 
RGS
7:20 PM
@Adám hm I see
 
:54602493 Yes, sorry.
 
RGS
also I expected ⍬≡⍎⍕⍬ to return 1 but instead gives VALUE ERROR
 
Of course, for any flat character array, it could be a no-op, but that'd be boring.
@RGS because ⍕⍬ gives '' and ⍎'' doesn't have any value to give you, so can't have any.
 
@Adám The irony there is that +/4 5 1 6 8 doesn't work for BQN
 
@Wezl No, but at least it is ASCII, and anyone with even the slightest knowledge of any APL can do it in their head. It is in BQN.
 
7:24 PM
APL385s thick lines are annoying D: (i even increased s size there)
 
@Adám other than this damned i do like the thickness
 
7:47 PM
@dzaima Maybe could just be slightly smaller throughout, and slightly bigger throughout.
 
@Adám it's what i'm trying out right now. Was thinking why it wasn't updating, until '⊚' ≠ '⌾'
 
Ah, yes, Unicode homoglyphs…
 
That works. (now to suffer the consequences..)
 
8:05 PM
@dzaima Ah, now and won't work :-(
On the other hand, might work better.
 
@Adám none of those use in any precise form
what certainly doesn't work is
 
Nobody uses that, though.
 
I've always thought that ⍕⍣¯1 should just be , but fail on things that aren't character arrays
But perhaps, this kind of decision makes under less appealing
 
That'd be so useless.
I hope that once array notation becomes native, ⍎⍣¯1 will generate it.
Maybe ⍕⍣¯1 can become a safe dereference.
 
@H.PWiz that could certainly be a valid behavior, but ^ (i don't think its current form is any more useful)
 
8:14 PM
@Adám ⍎⍣¯1⊢⍬ also works
 
@H.PWiz Nice, that's even simpler.
The good thing about f⍣¯1 is that we are free to make of it what we want as as long as it holds true that X ≡ f f⍣¯1⊢X
 
RGS
8:27 PM
@Adám I would think the actual equality we cared about was X ≡ f⍣¯1⊢f X
 
@RGS No:
      1↓1↓⍣¯1⊢'abc'
abc
      1↓⍣¯1⊢1↓'abc'
 bc
 
@RGS it is what we usually care about but the opposite is way easier to maintain (and sometimes only it is possible)
 
 
1 hour later…
9:38 PM
@Adám Does this mean we lost the battle over adding to APLCart indexing over arrays with ≡=2 while preserving structure? Whoops, that sounds way pretentious somehow... I just mean: ⊃∘X¨¨Y/⌷∘X¨¨Y
 
@AviF.S. No. But it'd have to be ⊃¨¨∘⊂∘⊂ but do you like that?
 
@Adám That has to do with being unable to swap left/right in AC syntax?
Also, why did you change from ⌷→⊃?
 
@AviF.S. No, we could make it ⊃¨¨∘⊂∘⊂⍨
@AviF.S. Because we already have ⊃¨∘⊂ and you'd want ⊃¨¨∘⊂∘⊂ but how about ⊃¨¨¨∘⊂∘⊂∘⊂ etc?
 
@Adám Ah this is a good point! No, just something to come up when you search something related about scaling ¨¨¨ to match the depth, perhaps.
 
@AviF.S. Yeah, it is a mess in current APL. We desperately need my Depth operator f⍥k
 
9:45 PM
@Adám But about the prior, I'm happy with ⊃¨¨∘⊂∘⊂, just curious why the other doesn't work for AC. Must've not understood what the discussion before was about it not fitting the format...
 
@AviF.S. As far as possible, I try to make the entries in APLcart be such that one can copy and paste them into APL, name them, and go.
 
@Adám Good point; what about adding it to the tips page? Something like "We very much need ⍥ to take care of XYZ, but until then, you can do the following things to work around, scaling with additional ¨ per XYZ"
 
With my Depth operator, this would be ⊃⍥0 1
 
@Adám assuming the right argument is a simple vector
 
@dzaima Yes. ⊃⍥0 ∞ would be nice.
 
9:48 PM
(since my errors on unmatchable depth, i propose for no ¨ing - ⊃⍥0⍬)
 
@AviF.S. Try it online!
@dzaima Actually, Marshall suggested using for infinity in Rank. If we're not getting any time soon, I might just agree.
 
@Adám Very neat! I know see why it looks so similar to ⍤ since they act so similarly!
 
Exactly, Rank dictates on what rank arguments the function should be applied, while Depth dictates at what depth of arguments the function should be applied.
Depth is also nice for making any function into a scalar function, even though you've not defined it as such: f⍥0
E.g. you could write a which works on characters as well as numbers with {</⍋⍺⍵}⍥0
And we can "fix" system functions that are conceptually scalar, but not implemented as such: ⎕UCS⍥1 and ⎕C⍥0
 
10:46 PM
@Adám ctrl+shift+> and 0x220B. I know i'm a bit late :)
 

« first day (1230 days earlier)      last day (1408 days later) »