« first day (1489 days earlier)      last day (1173 days later) » 
02:00 - 21:0021:00 - 00:00

2:25 AM
@rak1507 Insert a third axis in b and then multiply.
 
 
1 hour later…
3:27 AM
Feel free to contribute to apl.wiki/humour
 
Humour has been created
 
 
3 hours later…
6:04 AM
@Adám wow this page is great
 
 
1 hour later…
RGS
7:20 AM
I had no idea tradfns could return other functions aplwiki.com/wiki/…
 
<moon-child> I've never understood why dfns can't
<moon-child> (in dyalog)
 
7:45 AM
@DyalogAPL well which implementation supports that?
 
moon-child: dfns can't because it has been intentionally disabled. There was a "conference edition" of the interpreter where it was allowed.
Now, why the idea was abandoned, that's a good questions.
 
<moon-child> @Razetime at least: mine, dzaima's
 
mine doesn't (didn't) intentionally at least. I don't particularly like it (now a name can also be a function-returning function, function-returning operator (monadic and dyadic), along the old list of an array, regular function, monadic operator and dyadic operator), but haven't disabled it
 
8:31 AM
Implementor's issue: should implement closures properly
User's issue: functions returning functions (or operators) is confusing by itself
 
oh right, closures are required to make returning functions make sense, of course. Dyalog doesn't have closures
 
9:19 AM
@MartinJaniczek Re the Link error, there still seems to be active error trapping, can you try one more time with ⎕SE.Link.DEBUG←1.
 
@RGS wait, what?
@Adám Who made the "Me at the APL Orchard" picture?
 
@xpqz All the entries have references (or direct links).
 
@Razetime I love it. Captures the feeling of many newcomers.
 
9:38 AM
@Razetime Where did you find the image? Is it a common meme base?
 
@RGS That (tradfns returning functions) should be on the APL humour page - I am pretty sure that feature started its life as a bug. Now we cannot remove it.
 
RGS
9:56 AM
@xpqz Why should I? No one told me explicitly, and all my attempts at functional programming never worked out very well because functions are not first class citizens...
@MortenKromberg Maybe the humour page could contain a section devoted to bugs that people started to rely on, and now can't be fixed or caused mayhem when fixed
 
@RGS No, didn't mean that you should have known about it, more an expression of surprise, as I always thought it was impossible.
 
RGS
@xpqz Ah 😅 yeah, sorry
 
Jan 3 at 11:35, by Adám
user image
 
@RGS *Shudders* Do we really want to mention them explicitly? People might get ideas…
@dzaima That's not funny. Just sad.
 
RGS
@dzaima Needless to say I didn't read that table with sufficient attention.
 
9:59 AM
I also intentionally omitted adding something very ironic that happened at Dyalog, since it would imply criticising a particular individual.
 
10:19 AM
@Adám I think it was knowyourmeme
 
10:33 AM
Announcement: I'll live-stream development on 2021-02-22 at 16:00 UTC, using concurrent threads to issue a status update mid-process.
2
 
10:49 AM
@Adám hmm I wonder who that could be ...
 
@Adám I don't know that I can easily compute my best guess at the number of APL'ers, but I would feel very comfortable claiming to DDG that the number is greater than 500.
 
11:16 AM
@RGS ^
 
RGS
@Adám I'm sad this wasn't announced earlier :'(
 
@RGS Why?
 
RGS
Because it was on a notice that was so short that I can't make it.
 
@RGS Sorry, I didn't decide on it until this morning. It'll be recorded, though.
 
RGS
No worries, I am just a bit sad but won't be holding any grudges :P
 
11:26 AM
@RGS In the "dark humour" section
 
@MortenKromberg pinged you an email re: 18.1
 
@xpqz ... and I have pinged the developer in question. I'll be back, hopefully soon.
 
RGS
@MortenKromberg Seems appropriate.
 
@MortenKromberg +←1
 
APL Wiki is open to anyone adding content. If you want to add a dark humour section, by all means, go ahead. I won't be the one doing it.
 
11:41 AM
@Adám I will try to be there
 
same
 
11:56 AM
@MortenKromberg Sure thing, here it is:
INDEX ERROR
FixFiles[15] source←cands⊃⍨candLengths⍳≢source          ⍝ first length-match
                         ∧
candLengths is 4 10 7, and source is '.'
 
@MartinJaniczek Thanks!
 
(well, not '.' I realized just now, but an array containing '.')
and cands is a vector of '.git' '.gitignore' '.github'
(scratch the . thing - I'm just confused by scalars having a major cell etc...)
 
@MartinJaniczek BTW, would you be interested in checking out the very latest version of Link, currently known as 2.1 but about to be renumbered as 3.0? This is the version that we plan to ship with Dyalog 18.1 and I think it has passed the point of being a better and more stable version than the old 2.0.3?
 
I can try this specific issue with a different version of Link if you want to (only used it because the instructions in aplcart said so); but I havent yet gotten around to using Link otherwise :)
 
If yes, hopefully the standard installation instructions at github.com/Dyalog/link/blob/master/help/Installation.md will work for you (use the master branch).
 
12:06 PM
I was working on a file and it says "can't fix" for some reason
and the whole thing goes read only
 
@Razetime Were you suspended?
 
suspended?
Idk, a white window pops up with a bunch of errors
 
APL had stopped due to an error, and you were debugging.
 
no, not suspended
I just saved my file
never had this problem boefore with any of the other files ⍨
 
Not due to saving, but I mean, did you have a function running (well, stopped) while you were editing it.
 
12:08 PM
nope
 
@Razetime Sounds like ^
 
just opened the file with )ed and pressed Cmd-S
 
Can you repro it?
We do know about an elusive bug that causes that kind of behaviour. It was literally just fixed now.
 
@MortenKromberg After installing the Link from master, running ]udebug on results in * Command Execution Failed: cannot find the file "/NASBuild/jenkins/nodes/docker-build/workspace/Dyalog_18.0_Linux_Nightly/SALT-/spice/Spice.dyalog". Unsure what that's about. Maybe I overwrote a directory instead of merging or something.
I'll try to reinstall Dyalog and install the master Link more carefully :)
 
@Adám I'll tell if it happens again
 
12:11 PM
@MartinJaniczek Huh, that's so interesting. Somehow part of our build process ends up in the final product :-(
@MartinJaniczek Can you leave it there for a min or two?
 
@Razetime Oops... Ahem... well, I know we have been doing work on our CI framework recently. I will leave you in Adam's hands for further debugging - thanks for your patience!
 
@Razetime Also, screenshots would be good.
And the result of running )si
 
@MartinJaniczek Interesting to say the least ! Adam has just asked me to take a look at this. I wouldn't reinstall just yet as I have a strong suspicion that you'll get exactly the same outcome ! I'll take a look in the near future ..
 
12:17 PM
@Adám sure
how do guards work in tradfns?
 
@Razetime They don't. You have to use :If etc.
 
ah ok
 
@AndyS I've just tried the same set of actions to copy items into a directory with a mix of already existing folders / items (on an unrelated filesystem tree), and that confirmed my suspicion that I've overwrote the folders instead of merging. Hence, if old SALT folder had files a.txt and b.txt and the link-master SALT folder had b.txt, after my overwriting the a.txt would be gone.
Which makes me think it's my error, but anyways I'll leave the installation in its current state if you want to try something on it.
 
12:33 PM
So when I choose "Only save file to disk", why does RIDE ask me what name I want to save the text under?
isn't that part of the other option?
 
Screenshot?
 
uhh can't put the screenshot here
 
@Razetime Can you not paste it into imgur?
 
why does it ask me for a variable name here
 
@Razetime That certainly is a bug. Let me see if it is RIDE or the interpreter we should blame…
@Razetime OK, RIDE is at fault. Do you want to log the issue, or should I do it?
 
12:43 PM
sure I'll log it
done
What does "interpreter exited with code 134" mean?
 
Segfault
 
huh, I just pressed shift F1 and then closed the popup
 
@MartinJaniczek What is the full revision number of your version of Dyalog APL .. is it 18.0.39712 ?
 
12:59 PM
Announcement: I'll live-stream development on TUESDAY 2021-02-23 at 16:00 UTC, using concurrent threads to issue a status update mid-process.
 
@AndyS Dyalog APL/S-64 Version 18.0.38756. Installed a month or two ago.
 
Oops. My previous announcement was wrong. The live-stream isn't until tomorrow. Sorry about that.
 
oh lol
 
RGS
Much better IMO
 
1:15 PM
@Adám here it is
it is still frozen
 
@Razetime Better than 100 words. So that's the white window you were walking about; the status window. Right, are you sure your code is syntactically correct? No stray s?
 
ok, now it said "cannot save changes"
all the ∇s are matched
the message came up after 5ish mins
 
After 5 idle mins?
 
yeah
 
Ouch.
So you didn't touch a thing, and it suddenly said "Cannot save changes"?
 
1:21 PM
yes
tradfns can be defined in tradfns, right?
 
no
 
then that's the problem
 
using a tradfn for the problem solving competition :(
should get you instantly disqualified :P
 
using a language's features is bad eh
 
yes
 
1:25 PM
@Razetime No, it is perfectly alright. Some people don't believe in "use the right tool for the job". Don't mind them.
 
RGS
@Adám That is insane, IMO. People should always use dfns, no matter what the cost. Using one's judgement is a preposterous thing to ask of people. Everyone should blindly follow the dfns cult. Long live the dfns.
 
lol
 
@Razetime However, note that tradfns use dynamic scope, so you don't really need to nest them.
 
@Adám oh no
 
Don't go there!
 
1:29 PM
dynamic meaning
 
A called tradfn can change values in its caller.
 
it can use functions defined after it
 
RGS
@Razetime Check out rojergs.github.io/MDAPL/…
 
neat
 
RGS
@Razetime Ikr? And I'm being paid to do this, lol
 
1:31 PM
@Razetime Dfns can too. A common thing is running an inner function in a loop, with the inner function adding to an accumulator in the outer function. Dfns can only do that if the inner function is defined inside the outer function.
      Outer←{
          acc←⍬
       acc ⊣ Inner¨⍳3
      }
      Inner←{acc,←10×⍵}
      Outer ⍬
VALUE ERROR: Undefined name: acc
Inner[0] Inner←{acc,←10×⍵}
                   ∧
 
oh
 
but the nested version is easier to read, so it's a bad idea to use tradfns there anywhere
 
      ∇ acc←outer
        acc←⍬
        Inner¨⍳3
      ∇
      ∇ Inner y
        acc,←10×y
      ∇
      outer
10 20 30
 
can I make RIDE save my file without trying to evaluate it?
 
@Wezl 3 -s
 
1:36 PM
thanks
 
@Razetime What are you actually trying to do?
 
I just want to use )ed like a normal text editor
 
open notepad, copy paste, save, done
 
@rak1507 h
 
lol
 
1:37 PM
@Razetime Does the file contain valid APL content?
 
nope
 
Then it won't work well. You can edit the file directly, but then you hit the bug with RIDE asking for the variable name.
If the file had valid APL content. You could do ⎕ED 2⎕FIX'file://path/to/file.ext'
And then all changes to the APL content would be written back to file (as well as to the workspace).
 
The question is how to save a file that doesn't contain valid content though
 
You can use )ed path/to/file.ext but apparently there's a bug where RIDE will ask you a meaningless question. Everything should still work, though, if you just ignore the question and click OK or whatever the default button is.
On Windows, we have a stand-alone APL editor too, which doesn't care what your content is (though it will attempt to make sense of it).
 
ah I put everything in a namespace and it saved
 
1:44 PM
It should also work to create a file (by whatever means) that contains multiple APL items, and then 2⎕FIX and edit that.
Just note that the editor runs in multiple separate modes, so you cannot, e.g. edit a function and insert :namespace foo at the top and :endnamespace at the bottom.
 
2:27 PM
ah yeah
 
2:51 PM
@MartinJaniczek When you get the time, can you download and install/upgrade to the latest 18.0 from www.dyalog.com. Indeed, for anyone who's using 18.0 and isn't running 18.0.39712 (for non-Windows platforms), and 18.0.39659 (for Windows) we would recommend that you update to the latest revision. I can't find anything directly related to this issue, but the number of references to /NASBuild in an installation image drops significantly between early October and mid-November last year ..
 
@AndyS I will, thanks. BTW would it be costly for Dyalog to upgrade the upload speed of the servers with the binaries? It's topping at around 300 kBps for me, which means the download takes 10min
 
@MartinJaniczek hmm .. it's taken just under 40 seconds to download the rpm for 18.0 ..
 
I don't know the specifics of the server (is it on some Amazon farm for example?) All I know is - I had this problem when downloading Dyalog APL initially, and my ISP's download speed most likely isn't the problem (I can download many MB per second from elsewhere)
 
@MartinJaniczek it's ~1.5MBps for me (latvia) (which is about as fast as anything else with my crappy wifi adapter thing)
 
I'm located in Czech Republic if that helps. But yeah if it's fine for Latvia, then it's probably not a locality/region issue. Weird
For completeness: I'm downloading the unregistered version. Maybe there are some QoS rules distinguishing between registered / unregistered?
 
2:59 PM
@MartinJaniczek i'm testing unregistered linux deb
(gtg)
 
I can get the unregistered version (Windows) downloading at 25MB/sec and speed still increasing by the time it finishes the download
From the IP I get, it's hosted in a UK datacenter from redstation.com/network which boasts a lot of high bandwidth links
 
Probably problem on my side then. Still, puzzling. (And, my download finally finished :D )
 
@TessellatingHeckler @MartinJaniczek: one of the reasons we chose Redstation was their high bandwidth - and they're not too far away from us!
 
3:15 PM
I am on 18.0.38756 is there any reason to upgrade?
 
3:28 PM
@rak1507 We regularly commit fixes to all our supported versions (the last three versions), so in general it's always a good idea to grab the most recent revision. In the case of 18.0 we recommend updating to what we called Issue 3 as earlier revisions of 18.0 include a problem where ⍳ can give the wrong result where the left argument contains 4-byte integers, and the right argument contains floats.
 
alright
 
3:44 PM
@MartinJaniczek Nothing like that .. we keep things as simple as possible !
 
ngn
4:37 PM
@Adám well done! you got it. finally you said it right :)
@RGS you didn't (i read just the first para)
 
ngn
4:55 PM
"relative notions" - wtf
"the chain of function calls that are currently being interpreted" - i.e. the stack?
"global for the called function" - there's no such thing. you could say they are "visible/modifiable in the called function", but they are not "global". "global" means there's only one instance of it and you can use it in _any_ function.
 
RGS
@ngn Don't know what you mean by this. If you are talking about the comments you made below, then disregard this msg.
 
ngn
"when a tradfn calls another function". i had to make some experiments to refresh my memory - i think it's the other way round: when another function calls a tradfn
@RGS ok, disregarded :)
 
If something returns no value in a dfn, how can you ignore it and move on? assignment doesn't work, ⊣ doesn't work, ⋄ doesn't work..
 
RGS
@ngn yeah, I tried calling a tradfn from inside a dfn and the tradfn can fiddle with the dfns variables.
 
ngn
@rak1507 it's easier to return something and _← it
 
RGS
5:07 PM
yes, the chain refers to the stack. Both the "relative notions" bit and the "global for the called function" may not be strictly correct, they are an attempt to get the reader -- who may have never programmed in their life -- to understand what is going on. And for someone who has never programmed,
I think by that point in the book they can better understand what we are talking about by thinking that there's 2 types of variables: the ones defined in the function and that only exist there (the locals), and the others that the function can get to but were defined elsewhere (the "globals")
 
yeah, was just wondering if it was possible
 
RGS
But I am open to suggestions that improve the correctness of the text, especially if they do not make it harder to digest
 
How many people learn APL as their first programming language nowadays
 
RGS
Probably not many (sadly)
 
ngn
@rak1507 dozens, there are dozens of them! :)
 
RGS
5:11 PM
(@ngn I love your Application Form #65536/2021 :') )
 
ngn
@RGS on behalf of the ministry of vector processing, thank you
did you try ⎕io←1 :)
 
@RGS btw the contents bit at the side seems to not work
 
@ngn I also applied to the ministry of vector processing....:)
Was also amused by the "How APL, J, K programmers see eachother" pictogram.
 
RGS
@ngn I did :') And I also thoroughly enjoyed the captcha
 
rojergs.github.io/MDAPL/User-Defined-Functions.html I think it's a shame that the first way introduced to do looping constructs is with control flow in tradfns rather than ⍣
 
RGS
5:13 PM
@rak1507 ... really? In a specific page? They work for me.
 
@RGS It's that they don't scroll for smaller screens, it works if you zoom out
 
RGS
@rak1507 Operators are only dealt with later in the book :(
 
ngn
@xpqz some day i'll try to collect the funny stuff in one place
 
well it's outdated and should be changed
 
Especially the main diagonal was funny.
 
RGS
5:15 PM
@rak1507 Oh I don't think that is something I can fix easily ⍥
 
:(
@ngn lol the captcha is hilarious
 
RGS
On my mobile (small screen) there is no secondary contents column, so I wonder how small your screen is.
 
not very, it's a laptop
 
@rak1507 I think there are two distinct target audiences for APL training materials today: functional array oriented folks like most of the people who inhabit the orchard, and your traditional domain expert who is looking for something to use for modelling. The latter kind of user probably things of his or her variables as some kind of in-memory database, and finds dynamic scope much easier to understand and work with.
 
rojergs.github.io/MDAPL/Some-Primitive-Functions.html on this page it only goes down to 4.18 for me
I think that's the largest page so far
 
5:18 PM
On my mission to read Hui's old papers, I found his introduction to APL to highschool kids ... jsoftware.com/papers/APL_exercises -- judging by that, I've just about reached Roger's idea of an adequate highschool student. I managed the whole Rank section :)
 
@MortenKromberg I would strongly disagree with dynamic scoping being easier to understand intuitively
 
RGS
@rak1507 What if you scroll (in the main text) past 4.18? Doesn't the contents column on the right follow you?
 
No
 
RGS
Sad.
 
ngn
@MortenKromberg but, but.. even experienced apl-ers struggle to understand how dynamic scoping works; and tradfns punish the user disproportionately for forgetting to declare a local
 
5:20 PM
@rak1507 I'd argue that it's easier to believe you understand it. So in that sense dyanmic scoping is quite dangerous, because you never know when it'll bite you in the rear.
 
Potentially
 
@RGS It works for me.
 
@ngn The fact that people forget to localise things doesn't mean that they don't understand it. Clearly, dynamic scope gives you more power to get yourself into an awful mess if you are not disciplined. Lexical scope requires you to plan things ahead of time, which is better in the long term, but also therefore more work in a simple system. And more complex, IMHO.
 
@MortenKromberg I think it's more work going 'oh I'll just store that in a variable' and then realising that variable name was used 4 functions ago and suddenly your entire system is ruined
 
@MortenKromberg How is it more complex?
 
5:24 PM
Lexical scope is what anyone who's progammed in another language expects. But I guess that's the point @MortenKromberg is making -- those aren't the traditional APLers. I even find Python's half-assed 'functional' scope annoying.
 
@xpqz Lexical scope is also necessary for implementing closures, which is something I'd prefer not to lose.
 
I could be wrong but I just don't believe anyone who is learning APL has never learnt another language
 
@rak1507 It used to be true. These days, who knows?
 
RGS
@rak1507 Maybe in a week I'll have something to say about this
 
maybe
 
5:26 PM
@EliasMårtenson Yes, for sure. Closures go hand in hand with lexical scope, and I was surprised that it's not in Dyalog.
 
@xpqz dyalog doesn't have first class functions anyway
 
@xpqz Wasn't there some way to kludge it to implement it?
 
ngn
@EliasMårtenson yeah, something with user-defined operators, but i can't remember the exact expression
 
As mental models go, I think @ngn/apl is closer to the scope rules I intuitively expected, coming from a non-APL background.
 
It is hard to for me to explain, or even be confident about given that I have used Dynamic scope for decades. But somehow I feel more able to reason about code in isolation with Dynamic scope. I don't need to read any other code to understand what THIS function does. I know exactly how it will interact with the rest of the environment.
Of course, without knowing how other parts of the code use the same semi-global data I cannot know how the whole system works, and I know that I should use such data with great care, but the model still feels simpler. Anyway, I don't expect folks in this roo
 
ngn
5:32 PM
@xpqz i made one important mistake though.. a←1 ⋄ {a←2}0 ⋄ a was 2, i.e. variables belong to the outermost scope in which they are mentioned. it should have been the innermost for plain assignment, and the next outer for modified +← assignment.
 
hello, the competition sandbox seems broken
the outer dfn isn't detected if it has a dfn inside
 
@MortenKromberg It seems strange that you're saying dynamic scope makes things easier to reason about in isolation when it is completely impossible to reason about anything that makes external function calls as there is zero way of knowing whether or not they modify the current functions scope
The only way to have any sort of idea of what a function is doing is to know exactly what every function it calls is doing
Unless you are completely reliant on none of them changing your scope (like with sensible scoping rules), in which case dynamic scope has no impact on how easy it is to reason about
{a←⍵ ⋄ _←bar ⋄ a} please tell me what this dfn returns :)
 
I like it in Perl how you can be explicit about the introduction of a new, lexically scoped variable: $a = 5; for(@a) { my $a = ... }
Showing my age here.
@rak1507 Easy :) the value of a
 
Not necessarily
 
What APL's use lexical scope (kap does by the way)
 
5:41 PM
@MortenKromberg if you insert your dynamic-scoped functions inside the function from where they are called, you get lexical scope behavior. (or the other way around, extracting functions from callsites goes from lexical to dynamic). That's pretty much the whole difference between lexical and dynamic scope (ignoring when a function is called from multiple places, but oh god do i hope that your scope mutating functions are called from only one function). All dynamic scope does is lose information.
 
(and have closures, I'd like to know how other implementations do it)
 
@EliasMårtenson ngn/apl
 
@EliasMårtenson tradfns in pretty much all use dynamic. dfns usually are lexical (though GNU probably does dynamic because dfns are syntax sugar for tradfns or something)
 
<klg> but lexicalizing $a (or $b) in perl is a bad idea most of the time :)
 
A lot of things are bad ideas in perl. That's the attraction.
 
5:44 PM
lol
 
ngn
@EliasMårtenson have you implemented lisp before?
mine used a "cactus stack" - every env (i.e. stack frame) has a pointer to its parent env.
a "procedure" is represented as a pair of lambda (ast, and maybe bytecode) and env.
a child procedure can outlast the evaluation of the procedure in which it was created, so the "stack" is actually a tree, if that makes any sense.
 
^ is pretty much what dzaima/APL does
(and dzaima/BQN too ofc; env being Scope, and "procedure"s only existing on the native java stack)
 
6:03 PM
@KamilaSzewczyk That's odd, I see this:
 
I got @rak1507 to validate it too.
 
^
 
@ngn Yes, the impementation in KAP is quite similar to a typical Lisp implementation.
However, I was more concerned with how closure syntax has been implemented in APL. People have had reservations with my choice of syntax.
 
Augh it's so awesome reading the APL quotations and anecdotes page (jsoftware.com/papers/APLQA.htm). I looove to read that kind of stuff (not just APL history but "computing back then"). Can't wait for the memoirs of @Romily to be published :) chat.stackexchange.com/transcript/52405?m=56720585#56720585
 
@KamilaSzewczyk @rak1507 OK, that last one repros. Will have a look asap.
 
6:06 PM
you lost one omega in my code
 
@MartinJaniczek same here, I find it very interesting
 
(and the ⍝ penis music part is misaligned with the code, but it shouldn't interfere with anything)
 
lol
 
(unless there's a regex behind the playground which i highly doubt)
 
6:36 PM
@KamilaSzewczyk Well spotted. That's what did it!
 
7:14 PM
@KamilaSzewczyk @rak1507 It should be fixed now. You may need to reload the page.
 
cool thanks
 
It wasn't nearly as serious as I thought.
 
8:00 PM
I'm working on fonts again, where can I find a list of all the APL symbols I need to include?
 
you can open APL386 in fontforge.
 
@Wezl Ooh, we should add that to APL Wiki.
 
I guess this works
 
@Wezl Do you want to support BQN?
 
are most of them in the unicode blocks MATHEMATICAL OPERATORS and MISCELLANEOUS TECHNICAL?
 
8:02 PM
Yes.
 
@Adám I was doing that before, but my editor doesn't support the double-struck characters
 
@Wezl here's what BQN386 has
 
@Adám any characters that you use every month that aren't?
 
Me personally? I use various typographic symbols:
 
ok I'll add those eventually, but I mean any that are built into some APL dialect
 
8:06 PM
is.
@Wezl Two Canadian syllabic chars: ᐵᑈ
 
@Wezl also here's a list of APL characters (many not used in any impl whatsoever, but still are APLy so are there)
 
@dzaima aaahh my brain can't decode java ::P
 
@Wezl and
 
@Adám did you forget you use ?
 
@dzaima Which dialect uses that?
@Wezl and π
 
8:11 PM
@Adám in general writing i mean
 
5 mins ago, by Wezl
ok I'll add those eventually, but I mean any that are built into some APL dialect
@Wezl λ and χ
 
@Wezl and here's another list of dzaima/APL+Dyalog APL (Adám is posting about NARS2000 and GNU which aren't included there)
 
The Wiki absolutely needs a list of all used characters.
 
thanks, and of course I'll need ⦕ and ⦖
( for cats )
 
@Adám probably some general page about characters, listing used ones per dialect and a total union one
 
8:20 PM
@dzaima We already have apl.wiki/Unicode ― just needs a section.
 
NARS2000 has derivative and integral symbols ( ∂∫ )
 
NARS2000 symbols from the lb: !*+,./<=>?\§¨¯×÷π‼←↑→↓∂∅∇∊∘√∞∣∧∨∩∪∼≠≡≢≤≥⊂⊃⊆⊇⊖⊙⊢⊣⊤⊥⋄⌈⌊⌷⌹⌻⌽⌿⍀⍉⍋⍎⍒⍕⍝⍞⍟⍠⍡⍣⍤⍥⍦⍨⍪⍬⍱⍲⍳⍴⍵⍷⍸⍺⎕○
dzaima/APL: !%*+,-./<=>?@\|~¨×÷ᐵᑈ…↑↓∇∊∘√∧∨∩∪≠≡≢≤≥⊂⊃⊇⊖⊢⊣⊤⊥⌈⌊⌷⌸⌽⌾⌿⍀⍁⍉⍋⍎⍒⍕⍛⍝⍞⍟⍡⍢⍣⍤⍥⍧⍨⍩⍪⍫⍬⍮⍱⍲⍳⍴⍵⍶⍷⍸⍹⍺⎕○
@dzaima + …-|~; it gives nonce errors for ⍫⍢ so i don't know what that means
@dzaima + ¯←→∞⋄
 
8:43 PM
@user41805 Okay, I have responded to @Adam 's request to address some questions about typed APL, but I'm kind of trying to figure out what the real questions are. I've read through some of the history of the conversation, but I'm still not sure what the salient question about types and APL is?
 
ngn
@arcfide does apl need static typing?
 
LOL
 
ngn
and thanks for visiting this chat, on behalf of everybody :)
 
@ngn What I actually said in my talk on that topic was, "Yes, but stop doing it wrong."
And, in case anyone is curious why the other 1200 lines of my Co-dfns code hasn't received a doctoral thesis on the work yet, it's because the majority of those lines are slated for deletion.
I think @AviFS was wondering about types for purely the expressive joy of the task, but I confess to a bit of confusion in that respect. IME, explicit static typing is always, by definition, a restriction of expressivity, not an addition. I'm curious as to what the definition of expressivity is in this context, and how @AviFS imagines something might be more expressive. ⊃
The best i've seen is in language implementations that do automatic code generation based on types, but I'm not sure that this is something inherent to types or if it is more the result of an implementation leveraging types to generate code, which is, IMO, possibly better understood as an orthogonal component separate from the types themselves.
As I mentioned in my talk, as a type system becomes more powerful, you progressively need to write less and less of the underlying implementation code/language. You write more types, and more of the underlying code is generated for you automatically. A sufficiently expressive type system would be powerful enough for you to no longer need to write any code in the underlying implementation language, at which point, you have a dynamically typed programming language.
 
8:58 PM
@arcfide as far as that's concerned, imo restricted ≠ ¬expressive; restrictions can allow you to express your intents
 
@dzaima What confuses me though is what expressive actually means. It's used a lot, but I am not sure that people are very clear and precise on what they mean when they use the word.
 
02:00 - 21:0021:00 - 00:00

« first day (1489 days earlier)      last day (1173 days later) »