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 ⍝
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?
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 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..
@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?
@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
@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.
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 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.
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 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).
@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 - 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.
The 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?
@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.
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."
@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...
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 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.
@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.
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
"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.
@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 ⎕.
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.
@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:
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.
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.
@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
@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..
@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