« first day (1157 days earlier)      last day (1500 days later) » 

RGS
12:23 PM
Yesterday I installed Dyalog and with it, I installed some keyboard layout/setting/(I don't know what to call it) that allows me to type in the glyphs with shortcuts, like ctrl + , for ⍝
(this I'm describing in windows 10)
 
Yes, that's standard for the Windows version of Dyalog APL.
 
RGS
but my laptop came from the US and I'm Portuguese so I defined Windows to have one Pt keyboard. So, before installing Dyalog I'd have 2 keyboards: the US standard and the Pt
and I would swtich between the two with Windows key + spacebar
Yesterday when I installed Dyalogflow I did something I can't really replicate/explain, that I thought would allow me to type in the glyphs while using the Pt keyboard
but now I noticed I have 4 keyboards xD The US, the Pt, and a Dyalog one for each
But now I only need to keep the Pt and the Pt-Dyalog
went to windows settings and was able to remove the US one... but how do I remove the US-Dyalog one?
 
@RGS Run the Dyalog uninstaller, then select only to uninstall the IME, not the interpreter.
 
RGS
And that way I will be able to uninstall only one of the IME things? The PT IME will remain?
The installer doesn't seem to allow me to select only one of the IMEs
But maybe this'll work: I uninstall the two IMEs
then reinstall :P but because this time I will only have a Pt keyboard, maybe I'll get only one IME?
 
I think so.
 
RGS
12:28 PM
I'll be able to reinstall the IMEs with the interpreter, right?
or the program that will remain installed
 
That would be consistent with my experience - this computer has the EN-US and US-INT keyboards from Windows, but only got one Dyalog IME (for English).
 
@RGS Yes.
 
RGS
12:43 PM
Had to restart the computer for some changes to take effect
not sure if it worked yet but I'll let you know when I know :P thanks!
 
12:56 PM
@RGS i remember being confused about that (iirc i had 4 layouts beforehand, so got 8 ._.). I recall that somewhere some layouts were "under" some other layout, disable-able separately, but that was a while ago and it's very much possible the whole UI has changed..
 
RGS
@dzaima If I don't get it working this time I'll try to check if what you say still applies in some way to whatever happens to me next time I open Dyalog :P
 
(but i ended up not using the Dyalog ctrl+ keyboard ones anyway, just this. It doesn't come with a Pt variant, but for me restricting to APL+±ascii is acceptable for APL input)
@Adám uh, forgot about that. what would i call your layout?
 
@dzaima Something like "Adám Brudzewsky's keyboard layouts for Windows" maybe, like the "Prefix key" entry?
 
eh, can't edit anyway ¯\_(ツ)_/¯
 
@dzaima Why?
 
1:04 PM
oh, it logged me out, but was cached as logged in
 
RGS
@dzaima what is dzaima\APL?
or APL\dzaima
(not sure of how to write it, I just remeber seeing dzaima and APL together)
 
@RGS dzaima/APL - my implementation of APL
 
RGS
cool!
I see that a "processing integration" is mentioned
what is meant by that? I know what Processing is, but I don't understand what you meant that is integrated with what
 
@RGS i allow writing programs in APL that can use Processing-y instructions to draw to a screen - simple example program allowing drawing lines
 
RGS
Ah I understand
that is interesting :)
Why did you decide to implement APL in Java?
 
1:16 PM
@RGS It's just what I felt the most comfortable writing non-trivial things in
 
RGS
Let me rephrase my question :)
Why did you decide to re-implement APL?
 
@RGS new features in Dyalog updates come approximately every year, features in my implementation can appear in half an hour :p
writing an APL impl also gave me a lot of understanding about how APL works
@dzaima (also, i've been meaning to rewrite the Processing integration for a long, long while, possibly integrating it in the android app (which does indeed run just fine on PC too))
@dzaima moreover, i wanted to have backwards-compatibility breaking things - most importantly, splitting the schizophrenic / into separate operator & function versions & no singleton extension, among other little changes
 
To anyone uninitiated reading ^, these are historical warts in APL.
 
RGS
historical warts..? meaning things that are as they are for historical reasons but that shouldn't be that way?
 
@RGS exactly. Dyalog maintains 50+ years of backwards compatibility, you can imagine that some of the decisions along the way weren't necessarily the best.
 
RGS
1:31 PM
yup, I would guess that some of the decisions weren't the best xD
 
1:59 PM
The question, though, is how many of those decisions were known not to be the best at the time they were made? Or, contrariwise, how many of them have proven to be suboptimal only because we've expanded and refined our knowledge in the interim?
 
@JeffZeitlin the / op vs fun wasn't a problem before trains, then it might've seemed like saving characters. Can't think of a reason for allowing 1 2 3 + ,1 though, other than people just being too lazy to disclose
⎕IO←1 vs ⎕IO←0 has been controversial for a while, iirc even from its introduction.
(i've mostly settled to using ⎕IO←0 for anything that's not playing around, but i don't think that's a reason to remove the option)
 
@dzaima / became a problem with nested arrays and non-scalar operands. There was no or so you had to do (0⍴0)⍴ or the obscure ''⍴
 
@Adám nested arrays with no
 
@dzaima No, I'm answering the two parts. The first sentence is about / and the second about ,1
It was therefore common to write 1⍴ when actually needing the first element as a scalar, and it was thus convenient to allow "singleton extension".
 
@Adám ah. How were nested arrays/non-scalar operands affected by the schizophrenia of /?
 
2:15 PM
@dzaima compare //(1 2 3)(4 5 6) with -//(1 2 3)(4 5 6)
 
@Adám oh wow. i assume …//A would've been always parsed as ({⍺/⍵}/)A before?
 
@dzaima Before what?
 
@Adám before nested arrays - there's no other sensible option to parse as
 
@dzaima It really has nothing to do with nested arrays, only that before nested arrays, there was no point in allowing non-scalar operands, as only very few combinations of mixed operands and specific arguments would give non-nested results.
 
ah right, even ({⍺/⍵}/)A meant nothing then. :|
 
2:24 PM
Exactly. Only things like ∊/ would work, but then you might as well use =/
I guess one could have used ⌽/ could have been like ⊢/ on numeric arrays, but that is super obscure.
 
I still want to be able to give my functions glyphic names, and also names using non-Latin alphabets.
Incidentally, some old APLs seem to have had some really sophisticated parsing for overstrikes - I recall that even though one that I used on an IBM 3033 had ÷ on the keyboard for the APL terminals, you could also enter it as : backspace - [or - backspace :]
(I'm also happy that Dyalog preseves the archaic but familiar ∇ editor.)
 
@JeffZeitlin A picture is worth a thousand words, until you have too many pictures, and then a word is worth a thousand pictures.
 
@JeffZeitlin Dyalog allows overstrikes (but not for ÷): Switch to Replace mode (hit Insert) or double-click Ins in the status bar. Then use the left arrow key (not backspace) to position the cursor on an existing glyph and type the other glyph. They'll combine if possible. E.g. and ÷ makes
 
@PaulMansour - I've said the same thing. But I agree with whoever it was that complained that user functions didn't seamlessly extend the language in APL. (Was that Guy Steele of LISP fame?)
@Adám - Oh, I've used overstrikes in Dyalog; sometimes I just think of them in those classical terms. It just occurred to me that the parsing had to be pretty sophisticated to start with, and that at least that old APL had to really have some intense lookup tables for it (to handle a 'composed' ÷ and the like).
 
2:43 PM
@JeffZeitlin I don't see how it is very hard, whenever it'd see a backspace, it looks into a pretty simple and short lookup table.
 
@Adám - Not necessarily so short, because it had to be able to handle it no matter which character you hit first - that is, ÷ BS ⎕ and ⎕ BS ÷ both had to be handled to give ⌹
Certainly, though, a modern parser would need longer tables, because more functions.
 
@JeffZeitlin At most, that'd be a factor two, or it could simple sort them before lookup. I wonder when it was done though. I suspect it was done at input time, not at runtime.
 
@Adám - Yes, my guess would have been at input/edit time rather than execute time.
 
@JeffZeitlin Maybe a question for RC.SE?
 
@Adám - RetroComputing? (I like that idea! Spread the infection of APL! :) )
Give me a bit to think about how best to ask the question, and I'll post there later.
Incidentally, I decided that I like your APL386 font a little better than APL385 - the spacing is a bit wider, which makes some things marginally easier to read.
 
2:55 PM
3
Q: How did overstriking on printer terminals work?

nadderThe technique of creating special characters by overstriking i.e. superimposing two characters on top of each other was common on typewriters. This was carried over to printer terminals and was used heavily in a language called APL on the S/360 using a 2741 terminal; see APL demonstration 1975 fo...

 
@Adám - OK, a good question for me to reference - but I'm going to end up asking it about the APL-modded 3270 VDTs.
Plus there would be the question of how the APL interpreter worked - did it preserve the three-char sequence, or did it 'tokenize' it into a single codepoint?
(Might have to be two separate questions.)
 
 
2 hours later…
5:17 PM
wrote a recursive list processing lambda (vs using branching) for use in gnu apl. thought somebody here might appreciate it:

l ← {↑{⍺ ⍵}/⍵,'∘'}
Y ← {⍺ ⍶ {(⍺ ⍶ h) (⍶ Y) t}⍣('∘'≢⍵)⊢⍺⊣(h t)←⍵}

0 {⍺+⍵} Y l ⍳4
10
lots of inspiration from dyalog
 
@cannadayr As you can see, the chat "merges" multiple messages visually. You can put your code in a separate message and hit Ctrl+K — that'll monospace it.
 
ah thx
 
RGS
Hey @Adám, are you up for another question? :P
 
@RGS Yes.
 
RGS
Thanks! Yesterday I mentioned the whole "write code in a script thing" and you talked about something that was common among APLers, which was that they "tend to live in the "session" (a fancy REPL) and experiment with code snippets there until it works. Then they collect all that into programs."
 
5:30 PM
Yes.
 
RGS
how is then the process of collecting everything into programs?
you also taught me about the )ed
and that popped up a text editor
 
Yes, you can then modify the content to say something like:
 
RGS
Is is from that editor that I can save something as a file?
 
MyMainProg←{
  lines←of code
  go in here
}
 
RGS
alright
 
5:32 PM
@RGS Yes, you can. You can do File>Save
 
RGS
but then hitting the usual "save" button attempts to save something of the type "workspace"
 
@RGS Yes, that saves everything you've defined in a single binary blob file.
 
RGS
@Adám the thing you said that, in the next day, the APLers would open to resume their work, right?
 
@RGS Correct.
 
RGS
I see
 
5:34 PM
You can even set a special variable, ⎕LX with a "Latent Expression" which is automatically executed whenever the workspace is loaded.
So you can set ⎕LX←'MyMainFunc 1 2 3 ⋄ ⎕OFF'
Then do )save or click the save button or choose Save from the menu.
Now you can double-click the workspace file from Windows and it will run your program and then done, it will quit APL.
 
RGS
wow ok
but why would I want to do that..?
 
Only if you were to create an actual end user application.
 
RGS
Alright, that seems reasonable
 
ngn
@cannadayr looks like lisp code pretending to be apl :)
 
@RGS You should also know that to get back a function you've saved to a file, use 2⎕FIX'file://path/to/file.dyalog'
 
5:46 PM
@Adám - Yesterday, we were discussing some of the oddities in APL naming. I'm wondering if ⎕LX didn't actually start out meaning something like "Link eXpression" or "Linkage eXecution", given its actual usage...
 
ngn
@RGS not all aplers do that, only the majority. i never use the session.
 
Or possibly even "Load and eXecute"
 
RGS
@Adám what does it mean to "fix" the code?
Because I tried using the UI to get back the function from my file and I managed to do it; it popped up in that little editor. But when I pressed ESC I was prompted with a lot of different alternatives
and the top one was "Fix as code" or something like that
 
@RGS Again, one of those old terminology things. It means to define or execute.
 
RGS
Alright alright
thanks
 
5:53 PM
@RGS FYI, I'm not here from Friday evening (begins soon) until Saturday night (UK time). But feel free to ping me, even many times, and I'll respond to each ping next week.
 
RGS
Why all the weird glyphs? It looks so cryptic hehe
 
@RGS Where?
 
RGS
what do you mean, "where"? :) ⍵⍺⍀⍝∧≠>≥∇⎕↓⍵⋄∘¯∊⍳⎕∘⋄∆⎕⌊⍵∆⌊⋄⎕'⌊
everywhere! hehe
I'm just too used to programming languages using ASCII characters
 
You could ask the same about TMN, no?
 
RGS
@Adám thanks a lot for your availability! I'll play around with the language and try to create toy programs
@Adám of course! Except I am used to TMN and not to APL :-)
 
5:56 PM
@ngn hah basically. Now that ive become comfortable w/ apl ive started to think about some of its shortcomings. been checking out your K interpreter - coming long yo. probably means I should learn K. Ill still miss the character set. Feel like going ascii only was a step back.
 
And lot of them are very mnemonic, at least once you've been told. E.g. is a stylised computer (the "box"), so it refers to system features and to console input/output. is a lamp filament to enlighten you about the code (i.e. it is the comment symbol). is mirror and is transpose, etc. etc.
 
RGS
ok, I'm not saying that they won't make sense once I'm used to them. I'm just saying that right now they look weird as hell! And I was actually about to ask what was up with the lamp ⍝ but now that you explain it that way, it kind of makes sense
 
@RGS what i personally love about APL is how it changes the way I think about manipulation of data. The weird characters are a initial hurdle but after you get over it it becomes the language you start to think in. much less restrictive than other languages imo
2
 
RGS
That is an interesting testimonial! Let's see when I cross that point in my journey with APL hehe
 
"notation is a tool of thought" (iversons initial paper outlining APL) is a transformative idea I feel modern programming lineages made a mistake in not embracing more of.
 
6:05 PM
@RGS Not only that, even the keyboard locations are well thought out. E.g. is on the Comma key like the word Commant/Comment and is on shifted 5 because it mirrors over the middle, where 5 is the middle of the digit range. And is on L because L is half a ⎕.
Gotta go. ○/
 
there are lots of algorithms that I would need to import a library to use in other languages. in APL it becomes possible to remember and recreate those algorithms.
good shabbos!
 
ngn
@cannadayr I should learn K - there's a k room too, if you're interested. miss the character set - in my impl (the latest, not the one on tio) you can do this:
 ⍳:{1+!x}; ⍳10
1 2 3 4 5 6 7 8 9 10
 
RGS
@Adám bye!
 
oooh that is very interesting. I also saw on github you inspired some1 to explore a functional dialect of apl
https://github.com/Bubbler-4/APLambda
 
RGS
what is the relationship between APL and K?
 
ngn
6:12 PM
@cannadayr interesting. that's @Bubbler who's an excellent codegolfer and is often in this chat
 
K is a sortve evolution of some of the concepts in APL written by arthur whitney. who i think was a neighbor or had a family member who was a neighbor of iverson.
mostly geared towards time series data analysis
 
ngn
Sep 10 '19 at 16:50, by ngn
@Sherlock9 apl vs j vs k :)
 
hah
 
RGS
@ngn xD That is an interesting chart
 
yea my main problem with K is that i find it significantly more difficult to distinguis what is happening vs apl. but it went that route cuz ( i think) easier to sell to finance.
 
RGS
6:15 PM
(isn't there some sort of "history" of what you typed in the Dyalog interpreter?)
 
ngn
@RGS page up
 
RGS
oh wow
hm it scrolls the interpreter
 
@ngn i just pulled latest srcs and tested the ⍳ operator. game changer for me. this might even get me to start using it.
 
ngn
6:30 PM
@cannadayr note that k versions can be very different. most jobs in finance are still about k4. ngn/k mimics k5-or-6, which are now abandoned. the latest development, still in the works, is shakti, aka k9
 
@ngn noted. I'm not in finance (platform ops) so most of my use of apl/K would be for my own benefit. things like implementation incompatibilities arent a huge deal for me generally.
might bug you a bit @ngn

how do I define a dyadic lambda?

10 {y#x} 1
'typ
10 {y#x} 1
 
ngn
6:49 PM
@cannadayr a lambda is a noun, it can't be used infix, but you can do {y#x}[10;1]
 
thx.
 
ngn
@cannadayr in k9, which is the black sheep of k versions, currently you can define dyadic verbs in z.k - a file with special syntax, loaded automatically: f:{monadic},{dyadic} and then in ordinary k code you can use it like x f y. but k9 is very young, anything could change completely any moment..
 
interesting. is it possible to define both monadic and dyadic nouns? (i might be getting terminology wrong). something like...
⍴:{x#y};
⍴:{#x};
 
ngn
@cannadayr are you asking about k9 or ngn/k(k5-6)?
 
ngn/k
also im getting this:
\h
()
 
7:00 PM
/me hopes that k9's unfortunate name doesn't mean that it's a dog...
 
ngn
@cannadayr you can't have dyadic user-defined functions there
@JeffZeitlin lol, i don't know for sure, but probably no
@cannadayr did you type a space after the \h?
 
@ngn negative i did not
 
ngn
@cannadayr are you using ./k repl.k or just ./k? \h is available only in the first case, i didn't want to bloat the binary with nonsense like help :)
 
ahh thx
 
7:17 PM
ill read the K-reference manual so i dont have to bug you w/ inane questions but thanks. this is v exciting for me hah.
 
ngn
@cannadayr which manual?
 
nsl.com/k/k2/k295/kreflite.pdf but if you know of one that you based your implementation on ill use that
 
ngn
@cannadayr i think oK's manual is the best publicly available description of the k5-k6 dialect
@cannadayr no problem about questions, i enjoy answering, but it may be better to do it in the k room, even though k is on topic here too. there are more k fans in the k room (obviously), so you're likely to get a quick reply, even if i'm away from keyboard
 
yep understandable
 

« first day (1157 days earlier)      last day (1500 days later) »