« first day (1233 days earlier)      last day (1421 days later) » 
00:00 - 18:0018:00 - 23:00

12:00 AM
@dzaima They're are actually two tied for top votes. But the one at the top the way you filtered, simply said consistent results. Anything appended to an empty program will behave consistently, in any well-behaved language. So I suppose that means it's up to the discretion of the voter?
@dzaima They're are actually two tied for top votes. But the one at the top the way you filtered, simply said consistent results. Anything appended to an empty program will behave consistently, in any well-behaved language. So I suppose that means it's up to the discretion of the voter?
 
@AviF.S. it also says "given consistent input(s)". You're not giving anything inputs, pretty much by definition :p
and as i said, an empty program isn't reusable as you can't assign it to anything
(second answer says "should be able to be assigned/named/referred to in some way")
 
@dzaima By the language's definition, sure. But there's no visible difference to the outside observer. And one could make an APL, for instance, implementation that behaved identically, except it happened to also treat empty programs/whitespace as function
 
@dzaima ah, "there must be some consistent method of providing input to the function" makes that more concrete
 
That is, given uncountably infinite time it would...
But that's just minutiae ;)
 
@AviF.S. if i could do f← ⋄ 4 ≡ f 4, then sure, an empty expression would be a function, but that is a visible difference
 
12:06 AM
@dzaima Hmm, that wasn't my interpretation of resusable
I just figured that if [nothing]1+2 works, [nothing]2+3 should also, and anything else you pass the function
Not anything about assigning, many (eso)langs don't even allow assignment/naming
 
@AviF.S. by that definition - would be a valid function in Python, which it's definitely not
@AviF.S. neither is required for being able to reuse code, but a function necessarily needs to be storable for reuse, otherwise it's not a function but a code snippet
 
@dzaima Good point. I'm agreed that it's not by any sane measure. And it's actively un-helpful to think of it that way. But I still think that it counts as under-the-hood, and that the language could hypothetically be implemented either way. Which means that in the case of a competition like this, one could make a concrete case, given the goal in mind
 
@AviF.S. it's still not reusable by any means however it's implemented without visible effects
 
@dzaima Sorry, I didn't follow!
You're saying assignment isn't required to reuse code, but then by saying it's storable it sounds like you're saying it is required...
What's the differentiation there?
 
@AviF.S. for example in in Jelly (and Canvas) each line is a separate function, callable by some means. Neither part is naming the function nor storing it anywhere, they just "are"
 
12:15 AM
@dzaima So then every line is a function in all languages with gotos?
 
and languages which don't allow reusing code in any way just don't have functions
 
That hardly seems to hold because in all reasonable languages (ones with file reading), you can implement gotos by reading your own source code and counting lines?
 
@AviF.S. that is pretty much how assembly functions work
 
@dzaima But then any and every code snippet is a function, because you can simply give the starting and ending location of it and then later on you can run through and find that code snippet...
 
@AviF.S. now we're moving into the "what are valid ways of calling a function" aspect of the question
 
12:20 AM
So then the distinction between a code snippet and a function falls away entirely (in TC languages with file reading aka most reasonable ones)
 
@AviF.S. i'd say not file reading but self-source-code reading, the source might not be in a file
 
@dzaima Good point!
You agree then, though?
 
@AviF.S. we haven't yet discussed the "what are valid ways of calling a function" part (i'd certainly say "read source, cut between X and Y, execute" is not a valid calling method)
 
Also, it seems messy because no one ever said anything about post processing... Any function could allow + or - to become a 'function' if they allowed post processing to do lambda a,b: a symbol b for dyadic funcs or lambda a: symbol a for monadic
@dzaima True! But at this point I'm losing site of the larger discussion, haha
 
"what are valid ways of calling a function" definitely needs to be a standard fact about each language afaict, otherwise i could say "Python, 0 bytes, call with print("Hello, World!")" for a hello world competition
 
12:26 AM
@dzaima Haha, couldn't agree more!
@dzaima Does that mean a meta is needed, or are you saying it's already been defined?
 
tl;dr "what is a function" can't be defined unambiguously uniformly for all programming languages, which is kind of obvious when said that way
 
@dzaima Couldn't agree more :)
Shall we let it rest at that?
 
@dzaima related: abusing headers and footers in TIO
 
@dzaima Thanks a million for indulging me in all of this :)
 
@AviF.S. i think this handles the "valid ways of calling a function", though it also uses the term "function" which we're trying to "define" here :p
 
12:30 AM
@Wezl Haha, great prank when using esoteric languages no one knows!
@dzaima Haha, don't those meta posts make you die inside with jealousy!! Martin Ender, who totally does deserve the points, asked the question with ~100 votes = 1000 rep. But then answered in 14 different ways, each with a title and nothing else. Each of those has average ~85 votes. Meaning he earned ~10k from that one question, immediately proposing answers to himself!! Those meta posts just crack me up so much!
 
@AviF.S. meta posts don't give reputation
 
@dzaima Oh... Now I'm super embarrassed! Well, still super amusing!
Any explanations anywhere as to why, though? It seems like an equally important part of the community, no?
 
@AviF.S. answer votes are often used as "polls", posting answers expected to be downvoted sometimes is good
also is, well, for discussion, which can include disagreement
 
@dzaima Ah, understood. In other words, you're not downvoted because your post is bad quality, or not well though out, or not helpful, but rather because they disagree!
Darn! You edited, which renders mine moot
 
@AviF.S. yep
 
12:41 AM
can't you post an answer as a community wiki, which shows you intend it to be upvoted and downvoted alot?
 
@dzaima Ah! Had no idea you could do that! Another one to add to the Wiki under formatting! Mind sharing how to do a tag?
 
@AviF.S. [tag:code-golf] for main and [meta-tag:feature-request] for meta though this is very unrelated to APL
 
@dzaima True... but I started a draft of how to use APL Orchard. There's a section on formatting in the messages, so seems worth adding for completeness, no?
 
31
A: How should Community Wikis be used?

DennisCommunity wiki is not a rep waiver I've mentioned that from time to time in the past. Community wiki doesn't just mean that you cannot earn rep from a post. Yes, it does have that side effect, but the community wiki option is for posts that can be edited by anyone without worrying about post ow...

 
@dzaima Better add how to do that, too...
 
12:48 AM
@AviF.S. also, little tip - to view the source of any message, go to the transcript (again, middle click its arrow) and edit history is always viewable there
 
@dzaima Super useful, will add as well! How though? I can't figure that one out...
 
@AviF.S. under left arrow → history
 
@dzaima Is that a feature that comes with more rep?
 
@AviF.S. that's why i said go to the transcript (either permalink there, or middle clicking the arrow)
in the main chat it only shows up if the message has been edited
also sandbox is better for testing
 
@dzaima Good point, thanks
@dzaima Interesting, you can access history of removed messages directly from the removed message. But if you permalink from anywhere else, the (removed) doesn't even appear in the transcript...
 
12:58 AM
@AviF.S. doesn't appear to be the case for me
ah, you can view the history of your own deleted messages if you have the ID, but not others'
if its visible from the transcript though i'd guess that's a caching issue
 
@dzaima Is it also the case for you, though, that you can't see whether there even was a removed message in the transcript?
 
@AviF.S. yeah, that's how it behaves. Removed messages aren't useful for the transcript anyways
 
@dzaima Thanks a bunch! I added 5 new things to page just now re: all this. Becoming a bit over-the-top, but always easier to cut than to add, I suppose!
@dzaima N days from now, will the removed message still be visible here, in non-transcript land?
 
@AviF.S. don't know about any N, but N≥2
 
@dzaima Ah! After at most 48 hours they're no longer visible?
 
1:06 AM
@AviF.S. no, i just scrolled back 2 days and saw a deleted message by me
i'd guess the (removed)s stay here forever
 
@dzaima Ah, I got it backwards! Okay! Well thanks for all that! I feel like I should let you go rest now after like 3 pages of all sorts of bargering you!
Thanks a bunch, though, all super entertaining, helpful, and much long-term value extracted now on the wiki draft :)
 
N≥70 in the sandbox, and i really doubt they have any message count limit (or time limit somewhere past 70)
 
Wow, someone just upvoted my new answer exactly one second after I posted it...
 
 
4 hours later…
4:53 AM
For anyone who didn't notice, RIDE 4.3 is also out.
(And Acre 8, which means I have to update all three on my docker image)
 
5:26 AM
@RGS Yes, either that or tell AndyS or RichardPark or me.
@Bubbler Posted.
 
 
1 hour later…
6:46 AM
@Adám Can I specify the location of RIDE installation so that RIDE_INIT=HTTP:*:4502 dyalog will serve files from that folder instead?
RIDE 4.3 installs at /opt/ride-4.3/ by default, but running zero-footprint RIDE tries to serve files from /opt/ride-4.2/ which results in 404.
 
@Bubbler Oops, that sounds like a bug. You should report that.
 
7:05 AM
@Adám Dyalog's or RIDE's?
 
@Bubbler I'd log it against RIDE.
 
RGS
@Adám sure, I emailed support yesterday. The UI button to toggle box is raising a VALUE ERROR
 
RGS
7:37 AM
Also, I was wondering if someone could take some time to explain to me the meaning for the community of what Marshall has been doing :O
 
@RGS Really? That'd be my job to fix.
 
RGS
@Adám I can forward you the email if you want
 
@RGS Sure, if it has any details. In such a case, you probably want to send your session file.
 
RGS
@RGS the day Marshall joined this chatroom and sent a couple of messages it felt like everyone was already in sync with what was happening and everyone seemed so enthusiastic about it! And to me it just flew over my head
 
@RGS There are a lot of issues with current APLs. That may be fine for existing users, but for newcomers, there's really no reason they need to deal with the old warts. Marshall (and the rest of the internal group that was working on BQN before he left) is trying to take the best of APL and make a new language that doesn't suffer from forced backwards compatibility.
@RGS A lot of people have been complaining about issues with the language (or even tried making their own version because of such things), and yes, for Nathan, RichardPark, Nic, and me, it isn't news at all. We've been working on designing this language for a long time.
 
RGS
7:42 AM
@Adám ah ok so there had been work on BQN before he left Dyalog? Was anyone from this chatroom involved? Other than people from Dyalog
 
No, it was an internal group.
 
RGS
Ok so that was what "internal" meant. Ok thanks, this clears things up enough for me! I was so confused :-P
@Adám Will send you the session file now
The session file is the session config or the session log?
 
@RGS Make sure to CC support.
@RGS the .dse file.
 
RGS
The thing I got with Session > Save correct?
 
Yes.
 
7:48 AM
0
Q: Indexing with nested vectors in APL

icicleI have a vector of vectors that contain some indices, and a character vector which I want to use them on. A←(1 2 3)(3 2 1) B←'ABC' I have tried: B[A] RANK ERROR B[A] ∧ A⌷B LENGTH ERROR A⌷B ∧ and A⌷B LENGTH ERROR A⌷¨B ∧ I would li...

 
RGS
@Feeds both ⊂(⌷∘B¨)¨A and ↓↓A⌷⍤0 1⊢B work but none of these looks good
 
@RGS How about ↓B[↑A]?
 
The best I can come up with was {B[⍵]}¨A
 
RGS
@Adám This is neat
Adam want to add these possibilities to your answer?
 
@RGS Fails if the indexing vectors have unequal length.
 
RGS
7:57 AM
@Adám ah because then ↑ pads with 0s?
 
Yup.
A⌷¨¨⊂⊂B works too, but will enclose elements. A⊃¨¨⊂⊂B is better. See why we need that depth operator so desperately? It'd be A(⊃⍥0 ∞)B
 
RGS
@Adám why doesn't ⍤ cut it?
 
@RGS can't dig into an array, and it always mixes at the end.
 
@Adám instead of should work too, I guess?
 
RGS
@Adám (hence my ↓↓ before...) in A⊃¨¨⊂⊂B you start with ⊂⊂ so the output already matches the shape the OP wanted, right?
 
8:00 AM
@Bubbler No:
     B←'Aa' 'Bb' 'Cc'
     A⊃¨¨⊂⊂B
┌→──────────────────────────────────────┐
│ ┌→───────────────┐ ┌→───────────────┐ │
│ │ ┌→─┐ ┌→─┐ ┌→─┐ │ │ ┌→─┐ ┌→─┐ ┌→─┐ │ │
│ │ │Aa│ │Bb│ │Cc│ │ │ │Cc│ │Bb│ │Aa│ │ │
│ │ └──┘ └──┘ └──┘ │ │ └──┘ └──┘ └──┘ │ │
│ └∊───────────────┘ └∊───────────────┘ │
└∊──────────────────────────────────────┘
     A⌷¨¨⊂⊂B
┌→──────────────────────────────────────────────────────────────┐
│ ┌→───────────────────────────┐ ┌→───────────────────────────┐ │
│ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │
@Bubbler Since OP hasn't specified version, I have to avoid dfns.
 
I meant with depth operator, so A(⌷⍥0 99)B
 
RGS
@Bubbler I don't know the syntax (?) of the depth operator, but because we know B is a "string", wouldn't it suffice to have A(⌷⍥0 1)B or something of the sorts?
 
@Bubbler No. It'd again enclose the elements.
@RGS Sure; we're trying to make it general.
 
Mar 31 at 22:10, by Adám
@RGS 99≈∞ for sufficiently small values of ∞ ;-)
 
RGS
@Adám sure; I just want to make sure I understood
 
8:05 AM
@Bubbler Not true for Depth, which can be larger than 99.
 
Yeah, I just realized that
 
We have a proposal to allow as a stand-in for in (and by extension ).
I don't understand why wasn't added together with . It is so fundamental to write generalised utility code.
 
 
1 hour later…
9:13 AM
@RGS OK, I've fixed it. I'll get back to you on how you get the fix.
 
 
1 hour later…
RGS
10:36 AM
@Adám uh oh, I deleted the default session file and now the interpreter opens in a weird way:
I thought I could delete that file ⍨
 
@RGS You can. Just )load buildse
 
RGS
@Adám I found it easier to copy&paste the def_us.dse file from [DYALOG] to the place where I deleted the .dse file from
the fix you e-mailed me doesn't seem to work
 
10:54 AM
@RGS Ah, you need to rebuild your session. )load buildse then BUILD_SESSION'UK' then save your session. In a new install with the updated file, this isn't necessary. Actually, it should be enough to do ]box and then save your session.
 
RGS
@Adám worked, the ]box + save session
should I e-mail you/support with that update?
 
Yes.
 
RGS
(y)
 
think i managed to add the 65 heavy box drawing chars (with automation of course; it was surprisingly difficult to get the logic right)
 
11:11 AM
@dzaima Can I have the latest version to see how the new s look. That's the only real difference for APL, no?
 
@Adám it's still the same as is here
(at least i think i haven't changed anything around APL)
 
@dzaima The font name is still APL386
 
@Adám right, i'll change the metadata
 
(Uninstalling a font defined by two conflicting files crashed Windows Explorer!)
 
yay! (note that i haven't installed the font, i just include it in as an external thing chromium for testing so didn't notice anything)
@dzaima (i extended the edges for the heavy boxchars so they blended together better, don't think i'll bother redoing the regular ones beyond │─ as my generator doesn't function well on non-heavy ones)
 
11:21 AM
@dzaima Actually, wait. I like the new bigger circles. Can we not just make this APL386?
 
@Adám i mean it doesn't really matter what you call it, i don't care
( looks really out of place)
 
@dzaima No, but I mean rather than you and I maintaining separate repos, we can collaborate on this.
 
APL387?
 
No, there's no reason keep the old APL386.
The new circles make it much easier to distinguish and at a glance. That's one of the things I like about SAX2.
 
@Adám I'd absolutely no idea several within Dyalog had started on BQN... It's seemed, to me, entirely like Marshall's idea/property the whole time... From the Github to the way he talked about it during the meet.jitsi and in the room ⍨
Was it his idea, but then others were interested in helping to brainstorm the foundations, and then he took it back again, and is flying off with it, back in his 'field'?
Or is it still a team thing?
 
11:27 AM
The reason he's not continuing work on BQN2NGN is because he made it while at Dyalog, so according to his contract, Dyalog owns it.
@AviF.S. It was very much a team thing. We had several meetings and discussed each symbol and primitive.
 
@Adám That does sound familiar! But then, for instance, why hadn't RichardP tried it before the day of the call?
 
@AviF.S. Because we have work to do.
 
/me is very familiar with the concept of having too much hands on one's time...
 
@Adám sure. (note that iirc for some reason i started by editing the ttf not your sfd file)
 
@Adám Huh... Is it still a team thing? Because the latest GitHub repo seems to be his thing... And in the conversation, everyone addressed the questions to him about the design, as if he was deciding. And you and he went back and forth for the majority of him, under the guise of you questioning and him being the "one"
@Adám Ah, understood. So it's now in his hands, primarily? After the BQN2NGN was done together for much time?
@JeffZeitlin +←1 Same! Edit: Whoops, I misread. I thought you said to much time on one's hands-- that's me. Whoopsies
 
11:31 AM
@dzaima I didn't know a ttf was directly editable.
 
@Adám did you get an sdf of the original APL385 or something?
 
@Adám - Depends on the program you're using.
@AviF.S. - Nope! I was very careful about what I wrote there! :)
 
@dzaima No, I also started with the ttf, but created an sfd from it, and that's then my "source".
 
@Adám right, that's exactly what i did
 
@dzaima Might not make a difference.
 
11:34 AM
@Adám probably
 
@dzaima Are you OK with your contributions being public domain (like the original)?
 
@Adám yeah
 
@Adám I think this is overstating it. We had three or four meetings about how we would go about making a "new" APL, and I wrote a document about what I later called BQN during that time, but we never did a comprehensive review of BQN.
 
@dzaima (i believe the currently uploaded font still has the "public domain" copyright embedded anyways)
 
@Marshall Comprehensive enough? No.
@dzaima I've invited you.
 
11:36 AM
Primitives we didn't discuss: Root, Deshape/Reshape, Pick, Unique Mask, ≍ whatever it's called.
I started working on BQN2NGN after I turned in notice (the notice period is pretty long in the U.K.) and we never met about that implementation.
 
@dzaima Will you edit index.html to list all the added characters, and the fact that it works for BQN too?
 
@Adám sure
 
12:00 PM
@dzaima 1) Looks like you missed some homoglyphs: ⊝⊛ 2) I think the ⦅⦆ need more empty space in the middle. 3) Can you upgrade ? 4) Why does look all funky in certain sizes?
 
@Adám 1) updating; 2) while i agree, it's hard to do without curving it a lot; round parens are just not meant to be double-struck; 3) see 1; 4) no clue, i didn't touch it
@Adám maybe it's the hinting/instructing doing its job, but those instructions are wrong/old, imma clear that
 
Btw, there are a lot more homoglyphs to copy to. Something I've done in SAX2.
 
@Adám shouldn't the line in be disconnected from the circle?
 
@dzaima In TMN, sure, but for an APL font, one would surely want it to be the same as
 
@Adám are there any APLs interpreting it as ?
 
12:06 PM
@dzaima 4) Just copy to and also ⬦⬨⬫.
@dzaima Maybe NARS2000. I don't remember.
\
 
RGS
12:21 PM
@Adám and @ngn following up on our conversation from some days ago about writing really terse code, I had a go at it... Still don't know how I feel about it, I think what I linked looks too odd for Python code...
 
@RGS Does python not have a case select structure?
 
RGS
However, this reformatted version of the code doesn't look that bad
@Adám it does not :)
 
@RGS I like the compact one better. Better overview.
 
@Adám i personally find following control flow much harder in oneliners. I'm fine with linear oneliners in APL, but don't like pretty much everything else
also spaces are a really really really good code self-documentation and readability increasing tool, i have no clue why one would want to intentionally remove them everywhere possible (even worse, if you still have horizontal screen space)
adding a space after every ; there would help a lot imo - if i'm reading a line, it becomes 10x easier to skip reading a statement that i don't care about rather than having to search where the ; is
 
RGS
@Adám meaning you prefer the one you did not reply to, correct?
 
12:29 PM
Correct.
 
RGS
The more sparse one is still very compact, if you compare it to this almost equivalent brainfuck interpreter, the evaluate function
 
@RGS tl;dr
 
@dzaima in my code i even do funky things like (a.size()<len && bool || len==0) which i wouldn't necessarily suggest, but i think it helps
 
@dzaima True. It is mostly the vertical space I'm concerned about. I don't mind good spacing inside lines.
 
@RGS also, i'd align the in [x,y]:s
 
RGS
12:33 PM
@dzaima that was a "typo"
@dzaima this is also a clever tip
@Adám xD
 
@dzaima Similar
 
12:52 PM
 
Why?
 
ngn
@RGS minimalism is an acquired taste. you must go through many iterations before you start appreciating it.
 
@Adám for you to review, maybe something needs to be changed. if not, feel free to merge
 
Ah.
 
i might have to look into how to install ttf files on different platforms. I was noticing a lot of inconsistent rendering between my devices (android, osx, and debian linux).
 
12:59 PM
@dzaima Looks good. Only thing that bothered me was ¬ looking too wide compared to -.
@dzaima Hm, the hinting seems markedly worse than on my original 386
 
@Adám i could not figure out how it works, nothing i did seemed different to anything else
where (as in application) do you see a difference, also screenshots?
 
@dzaima Try putting index.html in adjacent browser (I'm using FF) windows with the two fonts. The quickly switch back and forth between them. Many characters are quite bad in yours, only a couple are better (in the exact same way).
 
@Adám i did exactly that, in FF, and there was no difference. i blame linux
 
@dzaima I havent had enough coffee yet to start a fight ;)
 
@cannadayr for which side? i'm the one using linux :p
 
1:08 PM
oh i love my linux thinkpad. debian sid on zfs root w/ gnome & firefox. best OS ive used by far.
 
Old vs New
The only symbols that are better are Å and the gender and white chess symbols. All the diacritics and fancy quotation marks are jumping all over.
 
@Adám does anything change after doing ctrl+a ctrl+shift+h ctrl+t in fontforge?
 
these characters I find a little complex for my tastes ⎉⚇
 
@cannadayr The circles indicate that they are the advanced versions of the uncircled superscripts.
@dzaima I can try, but not now. I really need to prepare the webinar.
 
i kindve wish there was an ⍺ & ⍵ overbar
theres these but theyre a little inconsistent (no omega overbar)
https://graphemica.com/%E1%BE%B1
and uppercase alpha is A which overlaps with the basic latin character set and gets confusing
one thing i appreciate about ⍺ ⍵ is that its easy to remember which one is on Left vs Right. but thats probably just due to familiarity.
 
1:23 PM
@cannadayr Why? (Iverson used them, btw.)
@cannadayr That might be obvious if you know the Greek alphabet, but it really prevents allowing Greek names, and also it is odd that the last letter is the argument when there's only one.
 
probably my familiarity w/ high school physics, but in my head alpha = a = beginning of alphabet = left. omega = w = end of alphabet = right
 
@dzaima TIL there was a "hinting" setting in mints font options, previously set to medium.. Full makes the taskbar finally not ugly, but unfortunately doesn't seem to affect chrome
 
Sure, that's the reason. The reason for w and x is that a single argument naturally is x as in f(x), and the w is immediately to the left of x in the alphabet. The left argument is usually the parameter for the function, while the right argument is the main argument.
÷ and - are historical oddities (and by extension, and ~), while ! and | have been "fixed".
 
@cannadayr The operators are pretty complex for my tastes as well.
 
i personally dont think of dfns in APL in terms of x,y,z. Partially because TMN function calls use a more M-expression like syntax for function calls, partially because i already have x,y,z associated with variable declarations or axis.
⍺ ⍵ is helpful-ish to me at least (and this is likely due to using it for a period of time), because i start to visualize values kindve tracking inwards from different directions in the function calls
humans can be reprogrammed. this is just more a comment about things I began to appreciate about DFN based apl.
 
1:43 PM
@Adám It looks to me like the characters in the old rendering are smeared vertically (see ∞ for example), and the reason that's better is that some characters are depending on it. If the horizontal lines could be fixed I think the new version would be an improvement.
 
@Marshall Agreed.
 
RGS
@ngn +← 1; minimalism in code is probably good, I just have to find the right balance. Also, minimalism ≡ golfing?
 
@cannadayr My alternative scheme used one and two upper dots above to distinguish monadic and dyadic operators. (Compared to the current superscript/has-circle scheme.)
 
most of the chars i added/redid indeed don't have hinting/instructing, but e.g. ≡≢ do (i redid them completely) so i'm kind of surprised it looks so weird
 
@RGS I object to that usage of =!
 
RGS
1:48 PM
@Adám in what sense?
 
@cannadayr I do think this is mostly a matter of familiarity. Not that ⍺ ⍵ don't have these advantages, but the fact you think that makes them better than 𝕨 𝕩 (which have other conceptual advantages) is because you're familiar with them. After less than a month of working with BQN I find them to be about equally usable.
 
@RGS
 
RGS
@Adám fixed
 
Thanks.
 
ngn
@RGS
 
1:50 PM
@Marshall And my impression is that many younger people who might be interested in BQN find greek letters arcane and off-putting. There's also the fairly niche problem that they don't mix well with greek text.
 
@Marshall Not to mention perpetual confusion of ⍺⍵ with aw.
 
RGS
@Marshall I am a young person interested in APL (hence potentially interested in BQN) and I like Greek letters but that might be because I am from mathematics, where we use Greek letters aplenty
 
@Adám confusing ⍺⍵ with aw is much harder that wx with 𝕨𝕩 imo
 
ngn
bqn looks like @Marshall wanted to replace apl's ⍺⍵/aw with xy but gave up halfway :)
 
@dzaima By name, maybe, but no choice of fonts will make them look alike.
 
1:52 PM
@RGS That is because you are from mathematics and specifically college-level mathematics, I'd guess. You might see a theta in high school, but not alpha or omega.
In the US, at least.
 
RGS
@Marshall exactly; in Portugal you encounter some thetas in trig and not much more
 
ngn
no pi?
 
RGS
maaaaaybe some alphas/betas if you do maths competitions at a very high level but that is a very small percentage of the population
@ngn and pi of course ⍨
 
@ngn Pi is so fundamental no one even thinks of it as greek!
 
I'm trying out a JP-inspired symbol set, considering 左(left) and 右(right)
 
1:54 PM
we regularly use alpha/beta/gamma/theta as angles
 
RGS
@RichardPark now one doesn't confuse aw with ⍺⍵ but the symbols with themselves ⍥
 
We considered so many alternatives: ⍇ ⍈, ⍃ ⍄
 
@RichardPark I've also been thinking about this comment about pronouncing 𝕨 and 𝕩. Of course you (I) shouldn't use x and 𝕩 to mean different things, but is the fact homophones might come up really that much of a problem? Similarly, you might use GetURL and gitURL when just doing text program, but would avoid them if you want to speak about the code.
 
@Marshall Yeah I've also thought that - in JP there are homophones up the wazoo and you're generally fine just because particular words only make sense in context (although puns are also endless) - k uses x,y,z and I'm sure it's not a problem
 
Yeah, what's really the problem with using plain ASCII w/x and F/G/R/S?
 
2:02 PM
@dzaima on the positive side, now i know that what i was trying wasn't necessarily wrong, i just couldn't see the effects. ¯\_(ツ)_/¯
 
@ngn The idea with w/x and not x/y is that the left/right arguments should be alphabetically ordered and if there's only one it should be called x.
@Adám There's no serious problem, but I prefer the marker than these identifiers are "special". In particular, you need to check for F or G to see if it's defining and operator, and the double-struck characters make that much easier. And you won't end up accidentally turning your function into an operator by using f as a variable.
 
@Marshall Ah, I didn't think of the necessary code analysis. Maybe I'd prefer a different indicator than the simple presence or absence of characters.
 
ngn
@Marshall you could still do x≡⍵ for monad and xy≡⍺⍵ for dyad if you want
 
@ngn This makes things like adding a left argument to a previously monadic function more difficult though.
 
@ngn i would prefer x≡⍵ and yx≡⍺⍵ to that
 
2:18 PM
I think it makes a lot of sense to leverage double struck and/or fancy characters if you are going for a symbol heavy APL-style approach already. I can't see many reasons for changing it outweighing how much simpler that piece of parsing is when argument variables are special cased characters.
especially with the added bonus of sort order that Marshall has incorporated
For contrast, in Rakue code blocks allow argument capture into local variables by use of the ` twigil. { sort $^a, $^b }
 
I'd really like to try a properly designed LPA (left-to-right APL) with postfix monadic functions. There, it'd be obvious to use x and y (double-struck or not).
 
This creates a code block with signature: -> $a, $b { sort $a, $b }. The choice to use alphabetical ordering for this kind of sugar turned out to be a really great decision. It DWIMs (does what I mean) in the vast majority of general cases
 
@Adám probably again familiarity, but I sortve find RTL apl appealing. I cant prove it or anything but I lean towards agreeing with the original assertion that RTL produces results that tend towards fewer parentheses than LTR.
 
%hash.map: { "key: $^k\tvalue: $^v" }
 
@ab5tract Did you really mean ` or is that markdown shooting your foot?
 
2:24 PM
@cannadayr Uh, I don't think that can be true. It'd be exactly the same, just mirrored.
 
Oops, sorry yeah I meant "the ^ twigil"
 
@ab5tract Got it. Thanks.
 
@RichardPark Hey Richard, are you there?
 
@Adám yes i am soz
 
2:42 PM
Announcement: Webinar in a quarter of an hour!
 
RGS
@Adám thank god you made an announcement, had forgotten about it again
 
3:16 PM
Concerning the "magic" arguments to dfns - or even to any functions - I wouldn't object to them requiring a prefix glyph that wasn't otherwise used, e.g., $. With that as the signal, it also effectively removes the conflict with using names in another language. I note that it does break compatibility, but that might not necessarily be problematical...
 
3:30 PM
@RGS +←1
Where to send questions to RichardP?
Darn! Just found the chat. Nvm
 
@AviF.S. I added replying to the wiki about Orchard tips
I used DevTools to get the icons used for chatting: here they are
 
@Wezl ⍤ ⍥ ⍤ ⍥ ⍤ ⍥ ⍤
You're a saint, thanks a bunch!!! I had no idea there was even such a thing...
 
@AviF.S. somehow I accidentally removed stuff, fixing...
 
3:45 PM
Was starting to seriously worry that I was the only one who would ever look at that page. Feel much better, now!
 
@Wezl fixed
 
It's also precisely why I'd been lazy in adding those particular ones at the beginning. Those were the only TODOs that I didn't actually do when I first posted it (in original draft). I didn't want to figure out how to do the images and format it nicely...
So you saved me from my nightmare, there :)
 
@JeffZeitlin One idea is to introduce a "header" to dfns. Shakti K has just begun requiring this universally. The ill-fated APL# had that too, though I think it was optional.
 
@Adám - That sorta moves dfns back in the direction of tradfns, though.
 
@JeffZeitlin I like to think of it as a unification. I actually sometimes appreciate the tradfn header, as it gives me a quick hint at how this thing is to be called, and if proper names are used, also what the arguments/operands are supposed to hold. A dop using only ⍺⍺ ⍵⍵ gives no hints as to the purpose of anything, and you have to go hunting in a large one, to see if it is a function or an operator.
 
3:58 PM
@Adám - There is that. My inclination tends to be toward using dfns for "quickies" - not necessarily "one-liners", but not much more than that. Anything that needs to be complex is, IMO, where one should be using tradfns.
 
@Wezl Why did you remove these TODOs?
 
@JeffZeitlin i have also thought about adding a way to name dfn args. it can also help if you want to use the names in inner dfns
@JeffZeitlin dfns are perfectly fine for multiline code as far as i care
 
@JeffZeitlin Yeah, but having 2 distinct explicit function syntaxes is plain silly. Imo, they should be unified.
 
@Adám That was an accident, I've fixed it now.
 
@Adám - But then, what's the point in having the dfns in the first place? They obviously were perceived as filling a gap somewhere that tradfns were seen as inappropriate for - so what do you really gain by unification?
 
4:03 PM
@JeffZeitlin less than 2 syntaxes for what should really be 1 and easily could be
 
@JeffZeitlin No, they were added because tradfns couldn't be patched up to allow a more functional style.
All the features of dfns could have been hacked into tradfns, except lexical scoping.
E.g. a separate symbol could be added to close a tradfn, e.g. which would allow them to be nested. One could then allow them to be used inline too. And by allowing a diamond on line [0], they could become 1-liners as well.
@Wezl Aren't all the ones we need in Unicode?
 
@Adám probably, feel free to edit the page or my edits; it's a wiki!
 
If you sacrifice yourself to some additional parser complexity, you can have both explicit signatures always and locally scoped named argument containers. That's in fact the approach that Raku takes that I mentioned above. Larry always favors tormenting the implementer for the sake of the user, though. And if Perl's sigils are controversial...
You can imagine what adding a second order sigil called a 'twigil' into the mix caused.
GNU APL's approach to defns is a similar sort of "explode to tradfn format" operation
 
@ab5tract They are simply syntactic sugar. They don't provide lexical scoping, and are very limited.
 
I know. I'm not implying that is the approach. I'm noting a similarity: parse sugar into the format you eventually want
If you are going to go for explicit argument lists, you don't also have to sacrifice the flexbility of specifying the argument lists inline and parsing them into the right syntax.
Keep in mind that proper closures imply blocks where passing an argument is a failure case
So you are going to want to create some sort of type signature out of the bare "defn" case anyway
 
4:18 PM
One could say that the argument list is optional for monadic functions, but required for dyadic functions and for operators.
{
  (fn MyOp)x→
  y←2×x
  ←fn fn y
}
 
I'm way too much of a newb to grok your point from that snippet :(
 
@Adám how about using ∇∇/ in place of MyOp for proper unnamed functions?
 
The line with a trailing is the header, and the line with a leading is a return statement.
 
Ah, nice :D
 
@dzaima Ah, yes, that's probably better, or you should be allowed to do that, at least.
 
4:21 PM
@Adám Wow! I'm elated. Didn't think anyone would ever look at it again. Hard to tell what'll get off the ground, and what won't, with these things
 
@dzaima (my syntax thoughts were {x ∇ y; x+y} before Adám posted his)
potentially unifiable with ambivalent definitions with something like {(x←0) ∇ y; x-y}
 
@Adám @DyalogTeam: Just wanted to say what an incredibly elegant format you guys came up with for 1200I(⌶)! Wasn't honestly particularly excited for a bunch of date-time formatting/converting, but that's the sleakest, most self-documenting format I've seen! Definitely seems like other languages should be using it
 
@dzaima also solves the problem of otherwise being forced to have parenthesis for ops - {(f ∇∇) x} ≡ {f ∇∇ x}
 
@AviF.S. Agreed! And it dovetails nicely with the stuff I've been using APL for!
 
@Athlon1600 Welcome! Interested in APL?
 
4:30 PM
@ab5tract Have to politely disagree on the second part... Didn't say I'd ever need to use it :p
 
@AviF.S. I don't generally expect statements I make about myself to necessarily apply to others, but I appreciate your clarification ;)
 
@ab5tract 'Course! Just couldn't resist the jab/tease* ;)
*(IDK what word one uses to sound reasonable, here, if one can even do so)
 
:)
 
4:50 PM
@RichardPark Just noticed that the latest Dockerfile does not appear to point to 18.0 yet. Just mentioning here in case it's a simple oversight.
 
@ab5tract Indeed it is, thank you I'll sort it out
 
I wanted to also raise to your attention that jupyter-lab is a generally more satisfying experience than the regular jupyter-notebook interface. At least it was the recommended interface in most of the Jupyter related articles I have read.
And for my personal taste I agree :)
I was considering submitting it as a PR actually
 
@ab5tract Yeah I had started something that's intended to be like a wiki-style collection of tutorials in Jupyter inteded for use with Lab github.com/rikedyp/LearnAPL but I'm currently working on something a bit more old-school just to get the content together first for a guided intro: rikedyp.github.io/APLWorkshop they're both very WIP right right now but you're always welcome to send feedback to rpark@ or here or on github or whatever
@ab5tract dockerfile being the one linked to from the download-zone.htm page?
 
@RichardPark Yes indeed. The regular one that you would use to setup Ride/Miserver.
@RichardPark Very cool! I remember you mentioning this in one of your presentations. Looking forward to digging into these.
 
5:09 PM
@ab5tract I've put a note to IT, although it is possible that it is on purpose and I've just not read something
 
Better safe than sorry!
 
@ab5tract Already too late for that tbf
 
5:33 PM
i had a question (open to anybody), does some1 know what eq is being used for complex number modulus?

for example:
1J1|1J2
¯1
1J1|1J3
0
1J2|1J3
0J1
 
@cannadayr "eq"?
 
equation
 
@cannadayr APL Wiki knows.
 
thx
 
00:00 - 18:0018:00 - 23:00

« first day (1233 days earlier)      last day (1421 days later) »