@Adám For aesthetics: It would be nice for Phase 2 problems to have an indication in the sidebar like Phase 1 ones (say a checkmark for "successfully submitted"). Having an empty space with no use is somewhat weird.
@Adám Seems to really be just a change to a new vendor, who will presumably offer roughly the same pace of development as IBM. I requested to merge on the APL Wiki.
@Adám If we're waiting, the default action would be to not make a page for Log-On APL2 yet, as it makes some pages harder to navigate. APL Wiki is not a crystal ball.
@Adám Yes, got stuck a little on the timeline of APL dialects. I'd written the page to include only languages that an APLer could start using immediately, so not things like J or Ivy.
I'm thinking now that APL Wiki probably should make that the definition of a dialect, rather than saying now that it doesn't define the term.
The only sort of borderline case is [[A+]], and we can clarify that it is an APL dialect.
@Marshall I added some less APLy entries because I saw ELI there. I agree that we should define the term.
Maybe anything that includes a superset of APL\360 core language, using the same symbols. "Core" excludes system commands and function, I-beams, bracket indexing and output lists.
@Konrad'Unrooted'Klawikowski Yes, indeed. If I'm not mistaken, the last thing you did was to define {2 = +/ {⍵=⌊⍵}(⍵÷⍳⍵)} for determining if the argument is a prime.
@Konrad'Unrooted'Klawikowski Did we touch indexing into an array?
With that in mind, can you define ThatAreDivisibleBy? It should take a vector on the left and a scalar (single number) on the right, and return those numbers from the left that are divisible by the single number.
i decided to blend together a few paradigms, and so i took a few K features, a few APL features, and a few Forth features to make this thing
it's still very young and i started working on this particular implementation yesterday afternoon, and there were a few bugs that i fixed
i brainlessly used unordered_map for the symbol table, which resulted in the evaluation order being undefined, so that for example a=2 and b=a would sometimes error, and sometimes yield a=b=2
this particular example should print 0 and return 216
@KamilaSzewczyk Not that it matters much here, but now, according to official APL Wiki terminology, it wouldn't be called an "APL dialect" but rather a separate language. RAD calls itself an "APL derivative". Do you have a name for your language yet?
@Adám I don't think it's important whether it matches any definition of "official". It's just kind of misleading because it sounds like some People In Charge have decreed that's how things work, but it's just some stuff I wrote.
@Marshall RAD and Kamila's language are actually interesting cases in maybe looking even more like traditional APL than A+, but not supporting arbitrary rank. "APL dialects"?
What would we call something that say worked exactly like Dyalog APL or APL2, but if you tried to do anything that would result in an array of rank≥2, it'd error?
@KamilaSzewczyk Okay, I'm still confused about how this example works. What does it mean to call f[2] if f takes two arguments? Evidently g's arguments get passed to f, but what if you have a definition like g:f[2]+f[3]?
@Adám I hadn't looked into RAD at all, and had assumed it was more different from APL. Are there examples of RAD code out there? The question is whether typical expressions would be intelligible to a "generic" APL progammer.
@KamilaSzewczyk Not sure I like it, but that makes sense at least.
Seems a little precarious in that if you add an argument to a function but forget to change one of it's callers, it can be passed an argument you didn't expect.
@KamilaSzewczyk Oh, I'd be interested in that. I've done some live (in the sense of live feedback, not actually listenable live) electronic stuff in J and it works all right but there are clearly some deficiencies.
@dzaima I added some specialized code for specific lengths in my filtering code, and I'm surprised to find that it's hardly any faster under OpenJDK, and actually slower with the Graal native build. Any insight into this? Is arithmetic really that slow?
@dzaima The point of compiling blocks early is so that you know the type, right? I never got why you would do it that way. Can't you just keep a stack of block information (opening brace location, which special variables or ; or : have been seen) and annotate the closing brace (also link the opening brace to it) when you find it?
@Marshall I did it that way because that's the first thing that came to mind, and it had no minuses at the time. Of course I could switch to something different now, but it'd probably take >5 minutes so i haven't done it yet as there hasn't really been any reason to me to