12:35 AM
@Adám I saw your comment, im too tired to go through, going to sleep. I'll check it up tomorrow morning. Thanks!

13 hours later…
1:36 PM
correction: ⍁ is used, in ngn/apl!
also @ngn what font does this use?
I can see it uses APL385, but ↗ isn't in it?

@EriktheOutgolfer The browser will fall back to whichever font has it. My Firefox Quantum/Windows 10 falls back to Segoe UI for that character.
@EriktheOutgolfer I've previously reported missing characters there, with good result. I'll report ⍁⍶⍹∞ as well. Am I missing more?

@Adám I think so? wait a bit

1:52 PM
@EriktheOutgolfer OK, I have an email ready, but will hold off. You can also email Kai yourself, for this or anything else. He's very nice.

@Adám for one, I don't know if ↗ should be added there, since it's not in the APL385 font

@EriktheOutgolfer Ah, the font shouldn't matter, should it? NARS uses ⊙ which isn't in the font either, iirc.

@Adám or ≈, which is in ngn/apl's language bar but isn't actually implemented

@EriktheOutgolfer That one is more questionable, since it is meaningless. Kind of like how Dyalog's default keyboards include ⍫ and ⍥ though they are not used.

@Adám actually, I'd not consider that used

1:57 PM
@EriktheOutgolfer In principle, ngn/apl "uses" all Unicode symbols ;-)

@EriktheOutgolfer Since every character is either a valid identifier char or considers a stand-alone symbol that you can give meaning.

@Adám In that case, there are a few chars such as ý which should be removed :p
or maybe the whole alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

@EriktheOutgolfer I think the top table is just sorted Dyalog ⎕AV, plus chars used by any APL.

sure

2:02 PM
@EriktheOutgolfer … which he falsely claims isn't available.

@Adám yeah it's available from here
@Adám also I've found an issue with Dyalog Forums
specifically, I can't register at all

@EriktheOutgolfer When? And who?

huh?
support@
oh, "Vince"

@EriktheOutgolfer Seems like the right place. When was that?

looks like I got a belated reply

2:13 PM
@EriktheOutgolfer Oh?

@Adám I replied, and tried for a third time, let's see...

@EriktheOutgolfer How does this look?
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
A few corrections:

It is untrue that APLX is "no longer available" (see https://www.dyalog.com/aplx.htm) however, it is no longer developed.
Missing from the top table are ⍶ ⍹ ∞ ↗ which are all used by ngn/apl, and ⍁ is used by ngn/apl too, so it should be moved from bottom to top table.
Some glyphs used by NARS are still missing: π ‼ ∅ √ ⊇ ⊙ ⍦ ⍭

@EriktheOutgolfer Good. Sent.

2:28 PM
I'm making a new golfing language where Game of Life will be just four bytes: 3∊me

@Adám Cool. What's it gonna be called?

@J.Sallé Stencil.

@Adám Nice, any specific uses for it in mind?

@J.Sallé Most challenges where you'd want to use ⌺. Similar to how my QuadR and QuadS golfing languages are good fits for when you'd use ⎕R and ⎕S respectively.
3∊me means that either the moore neighbourhood with self or the moore neighbourhood without self has exactly three live cells.

I see, I see. Good to have another APL variant to do the golfs
Also, ngn commented on my challenge! I hope he's trying to solve it in APL, it'd be cool hahahah

2:47 PM
@J.Sallé APL variant? more like inspired by APL's Stencil

@EriktheOutgolfer well, it's still a variant though
Technically speaking at least

APL child, you may say, but I think "variant" means that it's intended to behave similarly to its parent
more like A Programming Language ==> IBM APL ==> Dyalog (Dyadic Systems) APL ==> Stencil

Maybe. I've never been good with those pesky software engineering terms, so by 'variant' I mean something like a branch

software engineering?
more like programming language philosophy and genealogy
(if that's a thing)

Yeah, I've been taught a bunch of these terms in my SoftEng classes in college at least.
Emphasis on been taught rather than learned >.>

2:57 PM
@EriktheOutgolfer Funny enough, QuadR and QuadS are both subsets and supersets of Dyalog APL at the same time.

@Adám huh? that can only happen if they're functionally equal to Dyalog APL

@EriktheOutgolfer And so they are.

@EriktheOutgolfer Being that ⎕R and ⎕S can take an arbitrary APL function as right operand, you can do anything inside that function which Dyalog APL can do. So they are thin covers for but a single APL operator, but still contain the entire power of Dyalog APL.
@EriktheOutgolfer And so too will Stencil be, as ⌺ can take an arbitrary left operand function.

@EriktheOutgolfer ah... now that I read your discussion with Adam, I can make a less stupid comment: when ↗ was added I gave no consideration to font issues. Font fallbacks seem to work just just fine. It's a historical accident that ngn/apl ended up with ↗. I might as well have chosen the skull and crossbones symbol if I wasn't advised better :)

3:03 PM
@Adám $B\subseteq A\subseteq B\Longleftrightarrow A=B$

@EriktheOutgolfer No mathjax.

@Adám B ⊆ A ⊆ B ⟺ A = B

@EriktheOutgolfer Ah. Yes. But not A ≡ B.

that is, if A and B are langugages

CMP: Did you know that a tradfn can return a monadic operator as result?

3:10 PM

@J.Sallé Actually, maybe I'm wrong. Now I can't seem to make it work. :-D

      ∇F
[1]  {⍺⍺}
[2]  ∇
F
∇{⍺⍺}
∇
+F
∇{⍺⍺}
∇
VALUE ERROR: No result was provided when the context expected one
+F
∧

@EriktheOutgolfer No, it seems to not work. However, tradfns certainly can return functions as result.
⎕←⎕FX'r←F' 'r←+' ⋄ ⎕←F/3 1 4

@Adám
F
8

      ∇F
[1]  +
[2]  ∇
F
+

3:17 PM
@J.Sallé To be honest, it doesn't seem like a hard challenge, yet it's very verbose, so I kind of gave up. Now that there's a Python solution it might be easier to just translate it into APL.

@EriktheOutgolfer That's not a result you can capture and/or use. You're just printing.

      ∇R←F
[1]  R←+
[2]  ∇
F
+
1F 2
3

@EriktheOutgolfer Yes, and equivalent to what I wrote.
It also means you can take an argument and use it to select function.
⎕←⎕FX'r←F n' 'r←⍎n⊃''+-×÷''' ⋄ ⎕←3(F 1)4 ⋄ ⎕←3(F 4)4

@Adám
F
7
0.75

3:20 PM
F sure looks like an operator, but it isn't.
@EriktheOutgolfer What's the "wow"? That you can assign to ⍹? It is just an operand name.

@Adám it's used in dops in ngn/apl, but outside them you can assign to it

@EriktheOutgolfer Not much of a wow to me. In some APL flavours, you could always assign to ⍺ and ⍵ as regular names, just like you can assign to ∆ and ⍙.

@EriktheOutgolfer you can reassign it in dops, too, it's just a name like any other

@ngn If ⍹ has a global value, is {⍹} still a dyadic dop?

@Adám any pair of { } that contains directly a ⍵⍵ or ⍹ is considered a conjunction (dyadic operator) at compile time

3:34 PM
@ngn How about {⍹←⍺+⍵ ⋄ ⍺,⍹,⍵} ?

@Adám it contains a ⍹ so should be a conjunction

@ngn Ouch.

@Adám actually, it's a syntax error, because you're not allowed to change name class
@Adám {⍹←+ ⋄ ⍺,⍹,⍵} ⍝ this isn't a syntax error

@ngn Wait, what‽ What's the nameclass of ⍹ in 2(+{⍺ ⍺⍺ ⍹⍴⍵}3)4. It should give 6 6 6, no?

3:39 PM
@ngn So dops may only take functions as operands in ngn/apl?
⍞←2(+{⍺ ⍺⍺ ⍵⍵⍴⍵}3)4

@Adám 6 6 6

@Adám in order to be able to compile, I postulated this restriction - the nameclasses of names should be known in advance; or, as I would put it: the grammatical categories of variables should be known at compile time

@ngn But built-in ops can take array operands, right?

@Adám ⍣ certainly can, though I don't remember how it works

@ngn :-( No possibility to write covers for ⍣ and ⍤.

3:42 PM
@Adám it's a built-in, that's how

@ngn ⍨

@Adám ⍤ didn't exist when I wrote my apl :)

@ngn Oh.

4:13 PM
Nevermind....

2 hours later…
5:55 PM

@EriktheOutgolfer ?

ngn/apl. An APL dialect heavily based on Dyalog, written by a then-beginner in JavaScript, and performing surprisingly well. Judgements based on its bugs don't really get that it was written by a beginner in JavaScript, and it's made from scratch.

@EriktheOutgolfer Looks fine.

@Adám thanks, at least now I've got a stable argument for its bugs :)

6:51 PM

@ngn ΩΩΩ___ΩΩΩ

@EriktheOutgolfer What is the description for?

@ngn it was supposed to be an attempt to embrace ngn/apl against critics saying it's buggy -- of course it shouldn't be used for production folks, but the point is the sheer beauty coming out of its history

@EriktheOutgolfer I take it as encouragement to stop being lazy and fix a few of those bugs :)

@ngn if you succeed overcoming your laziness then you'll be unique :D
many have tried, but ultimately failed
(note: [citation-needed])

6:56 PM
@EriktheOutgolfer "What do we want? End procrastination! When do we want it? Erm..."

@ngn "...NOW!!!"

@EriktheOutgolfer What do we want? Now! When do we want it? Fewer race conditions!

@EriktheOutgolfer Many have tried, but none could be bothered.

@Adám I was surprised you didn't tell any empty array jokes yesterday.
@Adám it must have been because you were pressed for time

@ngn Here is an empty array joke, just for you:

7:03 PM

Dyalog APL now understands natural language:
@DyalogAPL If I have four apples, and remove four apples, what do I have then?

@Adám very good :) prototypes are funny too:
⎕←5↑1 2

takes time to log out of one account, log into another, then post the answer, then log out of the other, then log back in to the original

@ngn
1 2 0 0 0

⎕←5↑'ab'

7:06 PM
@ngn
ab

@ngn I don't get it.

here's the joke: a customer in a shop criticizes the shop owner for not having any fish in the shop, "But sir, in this shop we have no vegetables. If you want no fish, go across the street."
⎕←⍬≡''

@ngn
0

Another one: a student writes to his father, "Dad, today I ran after the bus and saved 1.00". The answer: "Fool! You should have run after a taxi".

I don't get this one

7:17 PM
@EriktheOutgolfer it's probably my bad English - the student ran behind the bus and didn't get on, so he can save from the ticket
@EriktheOutgolfer if he had run behind a taxi, he would have saved presumably more money from the fare

I don't get it, why "run behind" and not just walk calmly?

– Can I have a coffee without cream? – No sir, we don't have any cream, but we do have milk. Would you like it without milk?

@EriktheOutgolfer I dont know, perhaps he would be late if he walks calmly :)

@Adám – Well, I just want a plain coffee.

7:21 PM

⎕←5↑0⍴⊂0 0

@ngn
┌───┬───┬───┬───┬───┐
│0 0│0 0│0 0│0 0│0 0│
└───┴───┴───┴───┴───┘

⎕←5↑# ⍝ boom

@ngn

Rebuilding user command cache... done
Was OFF -fns=off
⍎NONCE ERROR
__field_initialize_result_←(⎕NS ⍬).⍎'⎕CY''salt''⋄⎕SE.UCMD''box on -fns=on''⊣enableSALT' ⋄ ⎕←5↑# ⍝ boom
∧

Real time: 1.211 s
User time: 0.954 s
Sys. time: 0.071 s
CPU share: 84.59 %
Exit code: 0

7:27 PM
@ngn But notice that it is a nonce error, i.e. the system (=Geoff) recognises that we just haven't gotten around to implement it yet.

truth be told

@Adám it's been only 50 years

@ngn No, objects are fairly new in APL.
One possibility would be to make the prototype of a ref be ⎕NULL.

Dyalog. An APL dialect featuring cutting-edge evolution through its history.

7:31 PM
@Adám I will never get over the mutability of namespaces... probably the worst mistake after ⎕IO and ⎕CT

(that means stuff is very often new)

@ngn It took a great many years before a good solution to floor and ceiling for complex numbers was found. Until it eventually was implemented, it gave NONCE.
@EriktheOutgolfer True. Dyalog was first with many things in the APL world.
@ngn Well, namespaces should probably be mutable (although that is very un-APL like), but I'd rather have dictionaries than namespaces.

@Adám well, contrary to APLX >_>

@EriktheOutgolfer And APL*PLUS, and a whole host of now dead APLs.
@ngn K's.

7:34 PM
@Adám not referring to its death

@Adám so immutable ("value semantics") and any type can act as key

but APLX stayed behind using old technology, which eventually led to its death

@EriktheOutgolfer That, but also, MicroAPL's side project became so successful that the income from APLX didn't matter any more. The company which sold APLX is still very much alive: microapl.com

the irony is that MicroAPL, the creator of APLX, does the job of migrating from old technologies to newer ones
> MicroAPL™ is the leading vendor of tools and services for migrating embedded, desktop, and mainframe software to new architectures.

3 hours later…
10:30 PM
On TIO, What's the difference between "Dialog CLassic" and "Dialog Unicode"
IS it the encoding they take?
they both seem to have same hello world

@Downgoat Yes, basically, although they can load each other's files, Classic only allocates a single byte per character, and will throw an error if you try to import a character which is not in the 256-char set. Though they are not in the set, Classic will import ⍤⌸⍠⊆⍸⌺ as ⎕Uxxxx where xxxx is the hex code.
@Downgoat Also, Unicode supports scripting mode (separating STDIN and STDERR), while Classic mirrors STDIN in STDERR (shuffled with actual STDERR output).
@Downgoat Unicode can use any Unicode font, while Classic needs a special font with glyphs in the right locations.
@Downgoat Unicode supports any character entry method, while Classic needs its custom input method.

@Downgoat Dyalog has customers with large databases containing non-ASCII characters. They are reluctant to migrate to Unicode because their database size will blow up.

so for the codegolf site: codegolf.vihan.org:4321, if an answer is tagged 'apl' would APL (Dialog Unicode) be the right onw to use?

@Downgoat Yes, I always use Unicode, but count my score as Classic. Only exception is when I need to address the actual bit representation or character set location of characters.
@Adám not sure, are they different enough that I should add two seperate dyalog-apl and ngn-apl tags?