« first day (1225 days earlier)      last day (1412 days later) » 

5:00 AM
I'm sure it's a brief lapse, but just a heads up that dyalogaplcompetition.com is down! Was up 5 minutes ago though, so could just be a restart. Anyway, it's a "504 Gateway Time-out: The server didn't respond in time." :)
 
@AviF.S. Probably a restart, as it is up now.
 
@Adám Hmm, odd! Must have some sort of funky connection, because it was working moments ago, but no more ⍤
Also, curious how idiomatic/reasonable/crazy it is to do something like ↓/¯1 1 '–Hello–' to extract the hello from the center! (In place of ¯1↓1↓'–Hello–')
Never seen reduceused for such a non-commutative operator, if you see what I mean...
 
@AviF.S. It is fine, and I do that sometimes, but remember to disclose.
 
Minus isn't exactly commutative either, but at least it's commutative over types and treats all arguments reasonably equally, if you catch my drift!
@Adám Yes, of course! Though I do find the enclosing behavior rather odd...
 
@AviF.S. I think you mean scalar, not commutative.
@AviF.S. You can even use it for "crazy" stuff like (⌽∘⍉⍪)/(⌽⍳8),⊂⍪0
 
5:13 AM
@Adám That's also true! Though, I meant commutative, in the sense that + - × ⌊ ⌈ and other common ones treat all arguments in reasonably the same way. And take the same type of argument on either side, so 'commutative over types' if such a thing existed! Whereas this takes takes one type on one side and another on the other → the init and last don't match, to use Haskell terminology!
(Or does that come originally from something older, like LISP?)
@Adám ⍤ ⍥ ⍤
 
@AviF.S. Ah, I see. Basically, all functions f where X f Y in general is as normal as Y f X, i.e. they have the same left and right domains.
 
@Adám I do find the enclosing behavior rather odd. Why does it do that when ¯1↓1↓... doesn't?
 
@AviF.S. It is because it is defined as "reduce [the rank]", rather than "insert [between cells]".
 
@Adám I understood the end, and that is exactly what I meant: that they should have the same left/right domains (types). But I'm not sure I understood the first part?
Before the ie, re: "Basically, all functions f where X f Y in general is as normal as Y f X"
 
@AviF.S. The two parts are the same. Saying that the application of f with swapped arguments is normal too, is like saying the two sides' domains are the same.
 
5:18 AM
@AviF.S. When the init and last don't match, think of foldr with three arguments - the dyadic function of type a->b->b, an initial value of type b, and the list of type [a].
 
@Bubbler Great analogy :) !
@Adám I find that super interesting, and it makes absolutely perfect sense. Super enlightening ⍥ Thanks!!
 
Sure, it explains what's going on, but it was still an unfortunate extension of the original reduction operator.
 
@Adám I guess I don't know what normal means here, then... (?)
 
It is quite informal. Speaking of domains is better.
 
@Adám ⍥ What do you mean that it's an unfortunate extension?!
@Adám I see, so not important to the point then? Just informal use of the word 'normal?'
 
5:22 AM
@AviF.S. Originally, operators could only use scalar functions, so there'd be no observable difference between rank-reducing and insertion reduction. When the operators were extended, dialects differed in how they extended them, and we got the short straw.
 
@Adám Ah, interesting! Do you mean to say you regret the way Dyalog decided to extend it?
 
@AviF.S. Yes, except it wasn't really Dyalog, as they just went by the proposed standard.
 
@Adám Understood. Well I won't bother you with the why & the wherefore now, but all these historical bits about how/why things were done the way they were and how it might have been better are super interesting to me! Maybe good fodder for an APL Cultivation, or maybe just one of the Zoom/otherTech Tuesdays in between (since not strictly a lesson)?
 
@AviF.S. Or even better, an APL Wiki article.
 
Of course, it's technically a lesson, bu I'm not sure if it falls within the curriculum you're trying to teach!
@Adám Ah, true! Is there already one?
 
5:28 AM
@AviF.S. No, I don't think so.
 
@Adám Well perhaps if we have a lesson, one of us could give writing it a go :p
Confusing my idioms...
 
@AviF.S. I've asked a colleague to write it up.
 
@Adám Already?! My goodness you're fast!
 
Asking for it takes no time. Writing it does.
 
@Adám All emails take me time...
Unfortunately, though, I haven't been able to sleep and I think I'm going to give it another try! Thanks for the answers \⍨/
 
5:34 AM
No problem. Good luck. Maybe ⎕DL can help…
 
 
2 hours later…
RGS
7:14 AM
@Adám good morning Adám; apart from the APL Cultivation would you suggest me catching up on anything else that happened here yesterday? I don't want to read the entire transcript :/
And I am also curious about who is the guest that will talk about plotting things in APL!
 
@RGS Nic as per APL Wiki.
 
RGS
@Adám nice! Looking forward to it
How did people react to the idea of the informal zoom meetings? Was there any interest?
 
Limited.
 
RGS
Oh ok, that is a shame
 
@RGS Not much. Bubbler collected some info on floor, and then we did complex maths in the Cultivation, so you've got all the content you need to create a notebook on complex maths.
 
RGS
7:21 AM
@Adám I need to go over the Cultivation lesson to see what I missed. But writing about maths is something I really enjoy so that shouldn't be a cumbersome (TODO)
 
@RGS The lesson was pretty basic mathematics-wise, but you might want to check out some tricks using , e.g. inverse relationships of 9 11∘.○ ←→ ¯9 ¯11+.○ and 10 12∘.○ ←→ ¯10 ¯12×.○
 
RGS
@Bubbler +← 1 thanks, Will do
 
(Btw nice emojis there, ∘.○ +.○ ×.○)
 
RGS
Already skimmed through the lesson and I noticed those things popped up
I like ~.○ and ^.○ and ~.^
 
 
1 hour later…
8:50 AM
@RGS @Bubbler - But are those APLemojis meaningful and useful as APL code? :)
 
Morning! How would I define a monadic trad-operator returning a dyadic derived function? I tried:
R←a (OPER f) b
but that thinks that the operator is f, not OPER.
Clearly, I'm missing something central.
Or are monadic operators always (f OPER)?
 
@xpqz Yes, monadic operators are post-fix, like ¨ and /.
 
Hmm, actually I think I may have answered my own q.
Once I typed it out, I can see it's the only way.
Thank you.
 
@Bubbler Yup, first I was about to post what RGS posted, but got ninja'd. Then I was about to post what you posted…
@simplikios Hi there. Interested in APL?
 
RGS
8:57 AM
@Bubbler I wanted to use it but didn't know dzaima/APL already had it implemented :O
 
@Adám ... but only to tie with J.
 
@Bubbler Sure, and it can't compete with in APL either.
 
RGS
9:14 AM
@Adám on the right of your 24 byte golf you have ⊢--∘⍳∘≢
why can't I use ⊢+⍳∘≢ ..? I don't understand but it gives a rank error
nvm I got it
⊢+⍳∘≢ is a fork and so the rightmost function (⍳∘≢) will be passed in 32 and the codepoints, and 32(⍳∘≢)codepoints doesn't make sense
 
Exactly.
 
RGS
I'd be glad if someone could check my explanation
 
Random thought: If PDI was a primitive (ϊ), then enumeration of major cells could be written as ϊ⍨ .
@RGS Looks good to me, save for "modulu" → "modulo"
 
ngn
10:04 AM
@RGS i don't care about your explanation but i noticed the code could be shorter: ⎕ucs 32+95|⎕ucs-32-⍳∘≢
 
Nice.
 
ngn
there's more, hang on..
 
@ngn In K, you can skip the initial ⎕UCS step, no?
 
ngn
u 32+95|63+⍳∘≢+u←⎕ucs
@Adám depends on version, generally yes
 
@ngn Ah, wrap-around, that's clever.
 
ngn
10:08 AM
63 is -32 mod 95
 
@ngn One shorter using ngn/apl: $32+95|63+⍳∘≢+$←⎕ucs Do you want to post this one so all dialects have an answer there?
 
ngn
@Adám wat how
 
@ngn Because ngn/apl allows assignment to symbols and treat them as 1-char tokens even if adjacent to other things. Just ask the author of it!
 
ngn
@Adám got it :)
 
You asked him?
 
ngn
10:17 AM
@Adám lol, i just read your message :)
talking to myself? no, i'm not at that stage of insanity yet. or am i? i don't know. what do you think, ngn? i think not. right, definitely not.
@Adám shouldn't ¯32+⎕ucs be invertible with ⍣¯1?
 
@ngn Yes. I've repeatedly asked for the obvious inverses of system functions to be recognised as such.
 
 
2 hours later…
12:18 PM
More on ]link-ed directories -- if I have a /ns1/fn and a /ns2/fn -- how can I use ns2.fn in /ns1/fn?
(or ns2 has a dependency on ns1 if you like)
 
@xpqz ##.ns2.fn
Think of it like a file system. If you are in /ns1/ and want to access the file /ns2/fn you'd write ../ns2/fn
## is .. and . is / (except that the root is # and not a leading .)
 
Ah yes, that works. Thank you.
 
@dzaima I think I've managed to write the insertion style and using Dyalog APL, and basing myself on Sharp's description:
_Reduce←{↑⍺⍺/⊂⍤¯1⊢⍵}
_Scan←{↑⍺⍺\⊂⍤¯1⊢⍵}
Problem is that they are not very useful with mixed function, especially on nested arrays. Or at least I've not figured out how to use them properly:
      ,_Reduce 'abc' 'de' 'fghi'
┌───┬──┬────┐
│abc│de│fghi│
└───┴──┴────┘
      ,⍥⊃_Reduce 'abc' 'de' 'fghi'
abcd
      ,_Scan 'abcdef'
a
ab
abc
abcd
abcde
 
12:34 PM
@Adám this? Of course, ,⍢⊃ :D
 
I speculate that this was the reason for J to have Scan not apply reduction:
      _ScanJ←{↑(⍳≢⍵)⍺⍺⍤↑¨⊂⍵}
      ⊢_ScanJ ⍳4
1 0 0 0
1 2 0 0
1 2 3 0
1 2 3 4
      ⊂_ScanJ ⍳4
┌─┬───┬─────┬───────┐
│1│1 2│1 2 3│1 2 3 4│
└─┴───┴─────┴───────┘
      +/_ScanJ ⍳4
1 3 6 10
@dzaima Yes, but then you're effectively defining the rank-reduce terms of insert.
@JacopoTissino Welcome! Interested in APL?
 
@Adám but yeah, it doesn't seem like a very useful operation
 
@dzaima A+ only allows scalar functions with these.
 
@Adám ah, that makes some sense. Hides the enclosedness of arguments of vectors
unfortunately for me, 99% of my usage of reduction is on vectors, and i need no useless enclosings (so much so that i'm fine with making reduction in general a bit weird)
 
 
7 hours later…
7:27 PM
@dzaima Will ⊇∘X⍢↑Y work (in ⎕IO←0) where Y is a ragged vector of vectors, thus padding with 0s and getting the first of X for those, then discarding them again?
 
@Adám that is an option for implementing ⍢↑, though i would personally go for erroring on ragged inputs
 
Is it any different from {'X'}¨⍢(5∘↑)'abc'?
 
@dzaima But it sure should work in Dyalog:
      Y←'abc'
      (2↑Y)←'X'
      Y
XXc
      Y←'abc'
      (5↑Y)←'X'
      Y
XXX
 
@Adám Very weird, you sure dyalogaplcompetition.com is up? I'm still getting a '504 Gateway Time-out' error...
 
7:35 PM
@Adám for a Dyalog ⍢↑ it would make sense padding with prototype and discarding, but i want to not introduce prototype requirements in as many places as possible
 
@dzaima Jinx! Hello there
 
@AviF.S. Yes.
@AviF.S. Do you also get a 504 on the alternate URL?
 
afaik in dzaima/APL prototypes are only touched in ~3 places - ⊃A, N⍴A and ↑A (though i'm still unsure if i should keep ↑(1 2)(1 2 3) working)
 
@Adám Something off with the university wifi, I suppose... My bad. Jsoftware.com also won't load, so it must just be too intensive? But then that alternate URL does work, so who knows?! Also, good idea trying the isitdown site! I suppose due to my wifi being off, I get even odd results... But anyway, it's resolved, just weird!
 
@AviF.S. Maybe clear your cookies?
 
@dzaima ah, a couple more - , (and because it has an implicit on the result, which i have no clue why i added)
 
@AviF.S. Hm, I know both the competition site and jsoftware.com are rather slow, so maybe, coupled with your mediocre connection, it isn't so much that the sites are unavailable, but rather that they simply take too long; time-out.
 
@Adám Yeah, that's what I'm figuring :) Sorry to bother you guys with such mundane non-related stuff!
 
 
1 hour later…
RGS
8:47 PM
@Adám FWIW this is also the error I got a couple of times
 
9:10 PM
@Adám i'm getting it too
 
 
2 hours later…
10:54 PM
@Adám I just got 504 on it, and isitdownrightnow says it has been down for at least 3 hours...
 
11:14 PM
@Bubbler @RGS @dzaima @AviF.S. I rebooted the server. Better?
 
RGS
@Adám seems fine
 
^
 
11:33 PM
@Adám Thanks a bunch! Works like a charm :) Relieved it wasn't just a me-problem
 

« first day (1225 days earlier)      last day (1412 days later) »