« first day (1245 days earlier)      last day (1402 days later) » 

12:00 AM
(or do you mean compared to the original SE chat dark theme?)
 
Also, is it much effort to add syntax highlighting + proper font for APL in the code environment? I understood that the modifier for the larger SE site linked from your Github offers that
@dzaima Haha, yes, I meant compared to the original dark
 
@AviF.S. iirc it was some things about the PPCG self-graduation script, before PPCG was officially graduated (and before it was renamed to CGCC)
probably doesn't matter anymore
 
Code block is slightly different color and the stuff in the top right is hidden to streamline, it seems...
@dzaima Ah that'd be for the rest of the site, no? I meant the chat
 
@AviF.S. there were some things i needed changed for chat too, but i don't remember precisely, that was 2 years ago
@AviF.S. right, the original theme did hide the user list for some reason
 
@dzaima Am very confused... yours is the one that hides the user list...?
 
12:05 AM
@AviF.S. mine shouldn't, i believe
 
@dzaima ... Swear to heaven and back on my computer it's the other way around... super strange
Images on upper right disappear iff only '... + Modifications' is ticked
 
@AviF.S. possibly it's changed in the original now (or never was a thing), and i have a local change that fixes it. Can't test due to stylus not liking multiple styles from the same source
you install what works better for you. ¯\_(ツ)_/¯
 
@dzaima Course! Didn't mean to nitpick, sorry. Was afraid I'd screwed something up, but doesn't really matter!
Well thanks again a bunch for introducing me to this whole new world of uber-customization. I can tell I'm going to lose hours on this now as if I didn't waste enough personalizing IDE's, haha
 
 
5 hours later…
4:55 AM
@AviF.S. @RGS Please don't use var∘← as it doesn't make any sense syntactically, and is really just a bug that slipped through due to how was implemented. To overwrite a global variable outside a dfn, you can use ⎕THIS.var←value. If the variable already exists, then var⊢←value works too.
@AviF.S. Most error messages have more than one word. How can you "call F1" on that? However, ]help syntax error already works.
 
5:09 AM
I think there's a mistake in the dyalog official reference. It defines bionmial (dyadic !) for non-integers as ÷Y×(X-1)!X+Y-1
which is recursive (unless I'm reading it incorrectly?)
 
@Moonchild It is not the definition of ! but the definition of Beta function.
 
@Moonchild No it defines it as X!Y ←→ (!Y)÷(!X)×!Y-X but also mentions that Beta(X,Y) ←→ ÷Y×(X-1)!X+Y-1
(kind of ninja'd)
 
ohh, I see
 
The wording is slightly ambiguous though.
It could be better to explicitly mention that the above formula is also used for non-positive-integers.
 
@Marshall Due to the syntactic anomalousness, I wouldn't use var∘← even if I need to create a global. ⎕THIS.var← shouts loudly that it is doing something potentially dangerous, while being normal easily understandable syntax. If someone has never seen ∘← and sees it in the wild, there'll be no way to find out what it does without experimentation.
 
5:18 AM
@Bubbler eh, not really IMO. I just read 'derived from' and assumed that meant 'equivalent to'
 
@Bubbler "for positive integer arguments:" … "For other arguments" … ":"
However, it could have the "solution" written out, i.e. move X!Y to the left of ←→
 
I get the impression that the sentence "...for positive integer arguments:" implies that X!Y ←→ (!Y)÷(!X)×!Y-X is used only for positive integer arguments, and a different definition is used for others.
 
@Bubbler Ah, you're right. It simply shouldn't have the word "positive" in "Binomial is defined in terms of the function Factorial for positive integer arguments:", right?
 
5:39 AM
I'd rather remove the phrase "for positive integer arguments" entirely from that sentence (and "For other arguments" in the next sentence too, because the property holds for all values, not only non-integers)
 
@Bubbler OK, I'll report that.
@Bubbler Logged as issue 18265.
Is there an official name for the ⊢-| function?
 
5:59 AM
@Adám For complex numbers? or Monadic or dyadic?
 
@Bubbler Oh, I should have been more specific. Sorry. The dyadic function, returning the largest multiple of the left argument, no greater than the right argument. K9 docs seem to call it "bar".
 
6:11 AM
@Adám I went through several Wikipedia articles and found none.
 
Thanks.
 
I could say "unit floor" in the sense that it is the floor of over the units of .
 
@Bubbler Ah, that's nice. Or round down to the closest multiple of .
 
RGS
6:59 AM
@Adám alright! My bad
 
7:17 AM
@RGS How could you know? I'll add name⊢← and ⎕THIS.name← to APLcart.
@fireflame241 Hello there. Interested in APL?
 
RGS
@Adám under what query terms?
 
@RGS "Update existing global variable (in dfns/dops)" and "Create new global value (in dfns/dops)"
 
RGS
@Adám sounds good (y)
 
Actually, now I think of it, ⎕THIS. has an additional benefit over ∘← in that it works for function and operator assignments too, where ∘← would fail.
 
RGS
interesting
@Adám this just worked:
      {
       a ∘← (⊢-|)
      }⍬
      a
┌─┬─┬─┐
│⊢│-│|│
└─┴─┴─┘
 
7:23 AM
Oh wow. Ugh.
 
RGS
      {
         var ∘← {(⍺⍺ ⍺) ⍵⍵ (⍺⍺ ⍵)}
      }⍬
      var
SYNTAX ERROR
      var
      ∧
      -var|
┌─┬────────────────┬─┐
│-│{(⍺⍺ ⍺)⍵⍵(⍺⍺ ⍵)}│|│
└─┴────────────────┴─┘
so apparently it works with everything? ⍥
 
Yup.
 
RGS
and on that note, I'm gonna have breakfast
(@JeffZeitlin hey there, how did you end up solving the dice problem?)
 
What's actually happening is that (unofficially) Dyalog has symbols, and is implemented as a hybrid function/operator like / et al. So name∘← is a derived function in the same style as 1∘/
@RGS OK, here's a real difference. ⎕THIS. allows you to choose which names are global, while ∘← makes all of them global. E.g. {(#.global local)←42}
 
@Adám ahh, interesting. How do you make that work? (How do you avoid special-casing ← to not evaluate its left argument?)
 
7:35 AM
@Moonchild is certainly special cased in many ways. Otherwise operator assignments and phrases like ←// would fail.
There used to be a bug that allowed you to isolate the symbol and return it, giving you full access to actual symbols in Dyalog APL.
 
I just mean, it seems easier|cleaner to specialize for the case of <identifier> <fun> ← <expression> than <identifier> <←-derived function> <expression>
(APL dialect I'm working on solves this by deferring evaluation of everything until needed by an eager operator like +. Essentially you parse from right to left but evaluate from left to right. But that changes semantics.)
 
@Moonchild No idea. It probably predates my birth. I can ask Geoff.
 
heh, alright
 
in dzaima/APL (and the equivalent in dzaima/BQN) the thing that represents (a b) in (a b)←2 isn't an array. Not that big of a deal in APL where functions aren't arrays either, but in BQN not being an array is a crime and the only thing you could do with it is generate errors if you could somehow keep the thing around
 
@dzaima I must be misunderstanding something. Don't BQN docs specifically say that, unlike in apl, not all objects are arrays?
 
7:43 AM
@Moonchild i guess i used the word "array" in place of "thing that can be treated as an array"
e.g. a + can be a part of an array, an argument to , operand to , but the mutable (a‿b) couldn't
(but if you could keep it around, the a and b would refer to the variables in the scope they were originally created in. Not that you can keep it around.)
 
ohh, I see
 
RGS
@Adám hm ok
 
@dzaima (that'd very much be an issue in Dyalog where there are no closures so symbols make more sense)
 
@dzaima shame, that
 
7:59 AM
Btw, we're doing an informal meetup at 3:30 UTC (that is, 7.5 hours from now), right?
 
RGS
@Adám right; what is the occasion and who is "we"?
Ah, is it the "replacement" for apl cultivations?
 
@dzaima Even {+←}4 works!
 
RGS
Oh gosh, I said "right" thinking you were asking if the maths behind the times was right. Wasn't it at 3:30 BST though?
 
@Adám yeah. and +← aren't that different in my impl
@dzaima (aka they're equal enough for this)
 
@RGS Occasion is the lack of APL Cultivation today :-)
@RGS Nope; in addition to. There's another Cultivation next week.
 
8:05 AM
@Adám (i'll be gone in an hour or two from now unfortunately)
 
RGS
@Adám I meant replacement in the sense that it is in the same timeslot, I know they are intertwined.
 
@RGS Oh, then yes.
 
@dzaima heh, there are 4 "callable" things in dzaima/APL - functions, monadic ops, dyadic ops, and "assigners" (of which there are the two and f← and no more). I believe once there was a time when & its cousins were actually functions, they just tried really hard to not look like ones
 
RGS
@Adám is it really 3:30 UTC or 3:30 BST?
 
@RGS 15:30 UTC, 16:30 BST. Proper chat Cultivations are an hour earlier than that.
 
8:19 AM
@dzaima an extra level of weirdness - the leading to return early syntax wasn't triggered there
 
RGS
@Adám oh ok, was ⍢ the impression that it was earlier
 
@RGS Well, the idea is for them to be ⍥ at the same time, with the meet-ups lasting only half an hour instead of an hour and a half.
 
( is probably my favorite thing in APL. ⍣¯1 was before, but is much more awesome)
 
Sure, is even more black magic than ⍣¯1. Marshall was supposed to add in Dyalog 20.0, but now the future is uncertain. ⍨
 
@Adám what i like even more is that it's not black magic. In APL things like this can actually be made to make sense
 
8:26 AM
@dzaima It makes perfect sense, but it still looks mysterious how it can possibly work.
 
@Adám indeed
 
And things we don't understand look like magic to us.
 
what is ⍢?
 
@dzaima So one can use the name exit as usual, but must spell it as (exit) if one wants to simply query its value…
@Moonchild A proposed operator "Under" which applies its right operand, then the left operand, then undoes the initial right-operand action.
 
@Adám heh, i checked back on that yesterday, having forgotten about it for months
 
RGS
8:31 AM
@Adám ah ok, thanks
 
@Adám it's a thing from back when i didn't know that ctrl+d was a semi-universal way to nicely ask a commandline REPL to stop or something
 
@Moonchild Think of "remove tumor under cutting under anaesthesia". After the removal, the patient is "un-cut", i.e. stitched, and then "un-anesthesised", i.e. woken up.
 
@Adám unfortunately i don't think i can write a dzaima/APL expression like 5∘↓⍢(…) to remove "tumor" from a given string.. :p
this is the closest thing i guess (and i can't think of any APL alternative to "under anaesthesia" :p)
 
@Adám Sounds cool...but isn't that essentially just be (⍵⍵⍣¯1)∘⍺⍺∘⍵⍵?
so ⍣¯1 is still doing the heavy lifting
 
@Moonchild No, because it can do structural things too, where ⍵⍵ looses the information and so can't convey it to ⍵⍵⍣¯1.
 
8:41 AM
@Moonchild ^ e.g. in my example, ⍵⍵ throws away "remove " and then "magically" remembers what it was after 5∘↓ was executed, and what to do with it
 
Simpler example: 2∘↓⍢(3∘↓)'abcdefgh' gives 'abcfgh' whereas 3∘↓⍣¯1⊢2∘↓3∘↓'abcdefgh' would give ' fgh'.
 
@dzaima oh, I see
magic ;o
 
(things like this is more the original idea for a use of structural , this n∘↓⍢(k↓) stuff i just decided to add because it's so damn beautiful)
 
Another example: -⍢⊃(1 2)(4 5) gives (¯1 ¯2)(3 4) while ⊃⍣¯1-⊃(1 2)(3 4) gives ⊂¯1 ¯2
@Moonchild Response:
> Such insights (from me) may not be very edifying. JMS and I implemented Dyalog at a phenetic pace and we grabbed ideas from elsewhere without massive academic analysis.

Modified assignment was acquired from C which we were using for the implementation. I really liked it and JMS was willing to put it in his code so it went in.

We got it wrong. Not necessarily on the hybrid aspect - we already had hybrids (f/ and v/). It was the a f← b that was treated like a←a f b that was wrong. The mistake came about because we kept thinking in terms of f as + which is commutative. When we came to actu
 
@dzaima (the magic is that (the one in ⍵⍵; which calls into ↑s undoing logic) is the thing handling all the logic)
 
8:52 AM
@dzaima Doesn't that slow down all applications of ?
 
@Adám calling "underly" is just one of the 8 ways to call a function. The regular dyadic call is handled completely separately
 
Oh.
We need someone like dzaima to replace Marshall. Does anyone have ideas how we find someone like that?
 
@dzaima (well, calling a function "underly" is actually 3 of the 8 ways to call a function; 2 more are the regular monadic/dyadic calls, and 3 more are for the inverses - monadic inverse, dyadic ⍵-inverse, dyadic ⍺-inverse)
 
Nic
I like ⌈ for upper case
 
@Nic right, i forgot it's a dzaima/APL-specific feature when using it in the example
 
8:58 AM
@Nic Yeah, and even more so for Lowercase. These were my my initial suggestions, but I've since reconsidered, as the ability of ⎕C to ignore non-character data is useful.
 
@Adám y'know, i could agree that ⎕C is better than / if it errored on non-character data.. :p
 
Nic
Right. (⌈ 2.5 'a') yielding 3 'A' is indeed hard to use
 
Furthermore, and (on numbers) are idempotent to each other and themselves, while this isn't so for uppercasing and lowercasing.
and are just so darn mnemonic for case mapping, and | is too for case folding…
 
@dzaima a weird alternative would be that / required items to be either all numbers or all characters
 
Is there an easy way to write {⍺⍺ on characters of ⍵} ?
 
9:03 AM
@Adám again, can't write a pure under-expression due to it requiring fgh trains which aren't supported..
 
@dzaima Ah.
 
@dzaima Yeah, that's the kind of thing I had in mind.
 
@dzaima the problem with fgh trains is that in general they can't work, but in cases like g≡⌿ it's really really useful
@dzaima (well that is unless i add a 9th way to call a function - "under-fgh-fork-centery")
 
@dzaima Suggestion: ⍷Y is the types of Y, i.e. chars→space, nums→zero. That'd allow ' '=⍷∊ to indicate chars.
 
9:07 AM
@Adám sounds reasonable (wasn't the original "type" builtin too?), added to my todo list
(i have 44 lines of TODO for dzaima/APL right now)
 
@dzaima Yes. But it was lost with ⎕ML←1. Being that X⊆Y is the non-default-⎕ML version of I figured ⍷Y could be the non-default-⎕ML version of .
 
@dzaima or maybe a bit more sane thing of being able to ask which argument should be constant if undered, so / & similar could work too with just adding a small function returning a thing representing ", please" to each
 
@dzaima I think both, but you may want to opt for only the right (for consistency with monadic application and with @).
 
@Adám ?
 
@dzaima So, sorry, I misunderstood. Well, allows you to specify.
 
9:22 AM
well, have to go now
 
○/
 
Is there a handy key incantation to stop output in RIDE if you accidentally sent a few megabytes to be output...? Interrupt from the menu doesn't seem to do it, nor does a C-c.
 
@xpqz Did you try Ctrl+Break?
 
Do you know what key is 'Break' on a Mac keyboard?
(let me google that)
fn-shift-f12 apparently
N ot enough fingers
 
Don't you need something too to access F-keys?
@xpqz Action>Strong Interrupt should work too.
 
9:37 AM
that's the 'fn' bit
 
Hm, so what happens if you assign some meaning to Shift+F12?
@xpqz Where did you find that?
 
Although didn't work in RIDE
The strong interrupt did work, however -- could have sworn I tried that.
F-keys are a bit of an afterthought on MacOS.
 
Did you try Fn+Esc?
 
Nope.
Doesn't work for me
 
OK.
 
9:43 AM
Aha. I bound C-c to strong interrupt
 
@xpqz Try Edit>Preferences>Shortcuts>Search:"strong" then click the "+" and press Ctrl+C, then OK.
Ninja'd.
 
snap
In terms of the principle of least surprise, I think that would have been a nice default binding for RIDE for anything unix-like at least.
 
Funny enough, in RIDE, I don't get the exact same behaviour from menu/shortcut Strong Interrupt as I get from Ctrl+Break, but it doesn't seem to matter much.
@xpqz Are you sure weak interrupt from the menu isn't enough. It works for me, though admittedly using RIDE on Windows.
 
I note that RIDE supports the emacs editing key strokes -- that's great for me.
 
@xpqz A few more to try here.
 
9:48 AM
@Adám o yeah so it does! I must be going mad..
 
Now the question is which one to bind. Maybe Ctrl+C for the weak one and Ctrl+X for the strong one?
 
In terms of dyalog, what's the difference?
 
@xpqz Weak can be caught by a trap. Strong will kill even tight loops.
 
Ok, I think C-c bound to Strong will do the trick for me.
 
@xpqz If you turn ]boxing on and then try outputting a bunch, you'll see that ... is printed if you weakly interrupt, but not if you strongly interrupt. The ... is printed by code that traps the interrupt.
 
9:54 AM
Yeah -- that's what prompted this really -- I had boxing on for a deeply enclosed nested horror show vector with thousands of items.
 
Consider using ]rows to prevent output floods.
 
aha. That's nice
In RIDE, can you change the tiling so that you can have the editor(s) below the interaction window instead of to the side?
 
@xpqz Just drag them around.
 
!
Amazing
It's a nice tool.
 
RGS
10:59 AM
@Adám can you be a bit more specific? :)
 
@RGS We need someone with a good grasp of APL and writing APL interpreters. Someone who can implement and and thunks, and…
 
RGS
Have you considered dzaima? :P
 
RGS
Damn
Well, fwiw I know a really clever CS guy but the only criterion he meets is "Someone who can implement ⍢ and ⍫ and thunks, and…" because he really is smart
But he has no experience with APL afaik
@dzaima what does 5∘(⊢-|) give when called with your age?
 
11:18 AM
@RGS Maybe we can teach him APL? I hear that it is fun and not very hard to learn…
 
RGS
@Adám what did 1∘(⊢-|) give when applied to your age? Was it 34?
 
@RGS Still, yes.
 
RGS
@Adám I'm sure we can. A couple of weeks ago I teased him to join TAO but he had some deadline. Will check in with him again. I talked to him because I'm sure he could do really well in the ongoing competition
 
@RGS TAO? Oh :-D
Heh, I never realised that happy coincidence.
 
I would think very hard, several times, about whether to use ⍫ as a new primitive - tradAPLs used that as the closing del of a function if the intent was to "lock" the function (make it unlistable and uneditable).
 
RGS
11:21 AM
@Adám what happy coincidence?
 
@JeffZeitlin Sure, but Dyalog doesn't, and I very much doubt APL2 will add it.
@RGS TAO:The Apl Orchard
 
RGS
@Adám wdym ? XD
 
@Adám - I'm actually surprised that APL2 doesn't use it for locked functions; my impression was that APL2 was more-or-less a "follow-on" from IBM's tradAPL\360.
 
@RGS Yes, I remember now, but I never though about it.
@JeffZeitlin Sorry, I should have been more precise. I doubt APL2 will add Obverse. Yes, it does lock functions there.
 
RGS
@Adám :) when I saw that message I was confused because "Tao" is the surname of a really good contemporary mathematician, Terence Tao.
@RGS messaged him again, lets see if I can get him to learn some APL
 
11:25 AM
@JeffZeitlin Hm, GNU APL uses to lock too.
 
(Personally, I dislike the idea of locked functions; I think a better way of handling it, even with terps, is to have a 'compiler' that generates an entire "sealed" workspace once everything is Just Right. Keep an unsealed copy for your devs to do bug fixes et cetera, but you ship the sealed/compiled workspace to your customers. With a runtime terp, if appropriate.)
(Although "locked" functions for function libraries does have some logic to it...)
 
RGS
@Adám tsktsks :P I convinced my friend to join the Orchard
In a week or so he might pop up :')
 
@RGS Cool. Thank you.
 
 
2 hours later…
RGS
2:24 PM
@Adám I just want you to know we Pt people who have physical US keyboards appreciate your efforts
it was a major selling point for my friend when I told him about the struggle I had with the whole switching back and forth between pt-PT and en-US layouts, on top of the third layout for APL
he also has the same struggle I had and was delighted to know the repo I linked holds the solution to all our problems.
 
How do I associate a value with a synchronisation token when using ⎕TGET and ⎕TPUT? help.dyalog.com/17.1/index.htm#Language/Introduction/Threads/…
 
So, who is interested in meeting right now?
 
Meeting?
 
Yeah, come to meet.jit.si/APLOrchard with the password +/7 9 9 9 in APL/J/K
Just an informal meet-up of people interested in APLy stuff. No lesson or special subject.
 
Hmmm... Not getting the password correct, either
 
RGS
2:34 PM
@Adám the password is the numerical result, right? I can't seem to access the meeting with that
 
@RGS @JeffZeitlin Sorry about that. Try again.
 
RGS
@Adám nope; did you change the rules of math? Or did you mean +\7 9 9 9 ?
 
@RGS No, it should work now. Also ×/2 17
 
RGS
@Adám still not working ⍥
 
2:58 PM
@Adám Oh no! Was really looking forward to the meeting but could have sworn you said last time that it’d be at 16:30 BST, one hour later than the biweekly time for Cultivation, no?
 
@AviF.S. I messed up again. You're welcome to join now.
 
RGS
@AviF.S. Adám made a mistake :P
 
By messed up, do you mean it starts in half an hour or that it will be starting at 15:30 BST from now on?
 
@AviF.S. It is already on, but will keep going. Come on in.
 
Gotcha!
 
3:37 PM
Meeting ongoing at meet.jit.si/APLOrchard with password the result of +/7 9 9 9
 
 
2 hours later…
RGS
5:07 PM
@Adám ty for the meeting and sry for leaving so abruptly. Did you manage to discuss the array notation and get some nice inputs?
 
@RGS Yes. And the meeting is still going!
 
RGS
@Adám wow, I wish I could join again D: have fun !
 
5:19 PM
Thanks a bunch @Adám & all! Learned a bunch
 
5:44 PM
@all Github's CSS was just changed?
 
RGS
@AviF.S. they had a feature in beta that would change the way GH looks. Maybe it was rolled to production now
 
@RGS Must've!
Also, any chance you've figured out how to play with ⍢? The APLCart entry isn't working for me and the examples above aren't working in extended/dzaima/ngn, either...
For those that couldn't make it, was thinking a summary of current considerations would be nice:
In a perfect world:
〚1 2 〛⍝ ⊂1 2
〚⦅1 2 ⦆ 〛⍝ ,⊂1 2
(If I remember correctly)
There, 〚〛mean lists and ⦅ ⦆ denote an enclosed piece. However, that would mean introducing 4 new chars and after some light discussion about how to introduce so many more symbols, it was set aside as idealistic. Eg. APL pedal/special LISP-like keyboard with meta-keys/blowing sensor/elbow-switch/modal editor with caps lock
Also discarded was a special notation within delimiters that would remove the necessity for so many new symbols. Under this idea an array would be surrounded by something special, ie 「 array 」. Symbols inside would take on a new meaning so that:
() → ⦅ ⦆
[] →〚〛
 
6:03 PM
@AviF.S. ⦅1 2 ⦆ would be ⊂1 2
 
However, there was strong resistance to yet another context-dependent syntax. Cue fascinating conversation over the different Dyalogs that exist already within dfns vs. tradfns. Eg. a b←1 where initialized: (a←0 ⋄ b←+). Should (a→1 & b→1). Or (a→2 & b→+). Dfns/Tradfns handle this differently.
@Adám Makes SOOOO much more sense, I knew something was wrong!
Also, for a longer example:
〚〚1 2 3 〛
  〚4 5 6 〛
  〚7 8 9 〛〛
for 3 3⍴⍳9. So it's a rather nice & intuitive syntax
@Adám Do you want to cover the current consideration?
@AviF.S. Screwed this up; this should be clearer: Eg. a b←1 where initialized: (a←5 ⋄ b←+). Should (a→1 & b→1). Or (a→6 & b→+). Dfns/Tradfns handle this differently.
The current syntax, to be entirely honest, I'm not entirely clear on. Essentially it uses () & [], relying on the fact that in current APL, neither ever has a ⋄ in between. So () or [] with at least one ⋄ inside denotes a matrix/vector/thing. This is also nice because a new line can be used in place of ⋄, making it even clearer without adding any new syntax.
If I've understood correctly: Eg. (1⋄2⋄3) ≡ ⍳3 &. [1⋄2⋄3] ≡ ⍪⍳3
Misleading though if not careful because that means that:
[1
 2
 3] ≡ (⍳3) ≢ ⍪⍳3
The inconvenience with it is that to denote a scalar, one must do [1⋄] or [⋄1] or [⋄1⋄] leading to things like [⋄[⋄1⋄]⋄]. Because otherwise [] takes its normal meaning
I hope I misunderstood though, because it'd make more sense if () & [] map to ⦅ ⦆ &〚〛from before. Do they? Otherwise how does one notate something being enclosed in this new notation?
 
6:23 PM
 
Also @JeffZeitlin had the idea to do this like Pascal comments, eg. [⋄ array ⋄]. Turns out to be equivalent to the current idea!
@nathanrogers had the idea to do something that looks like:
``
1 2 3
`
4 5 6
`
7 8 9
``
If I remember correctly, and discussed pros/cons to having array syntax like all other languages. Cue note on JS vs. JSON.
 
@AviF.S. - Actually, my thought in that respect was that it might not be bad as an alternate syntax - that is, 〚〛 is the "normal" way to do it, but if you're not using a keyboard where the "white" brackets are available, there are worse things than using [⋄⋄] as an alternative.
 
Sorry for everything, was considering starting a draft wiki page for alternate array notation ideas but didn't think there'd be enough to say. Anyway, please add/correct! Would be nice to have it all here :)
 
@AviF.S. Opposite. The proposal is that [1⋄] is a matrix, thus treating the scalar as a vector, otherwise a matrix needs to be [[1⋄]⋄]
 
@JeffZeitlin Ah, thanks for the clarification!
 
6:27 PM
@AviF.S. That's the point of special-casing scalars to mean 1-element vectors.
 
@Adám I knew I'd screw everything up. It really would work better as a wiki where all my erroneous claims could be edited and added to...
 
@AviF.S. - Historical note: Wirth defined Pascal with comment syntax {...}. A lot of computers didn't have those characters available, and UCSD (I think) established (*...*) as an alternative in the UCSD Pascal compiler for the UCSD pSystem.
 
@Adám Do you mind clarifying whether () & [] map to their double-struck equivalents?
 
@AviF.S. I'll do so, but not now.
 
@JeffZeitlin The UC San Diego UCSD?
 
6:31 PM
@AviF.S. That's the one!
 
@Adám Just a yes or no would be super helpful for now!
Unclear on whether they're the same, or different
@JeffZeitlin My goodness! Didn't know anyone cared about them in CS
 
@AviF.S. Well, remember that this is in the early 1980s, when they were considered a top CompSci school. And UCSD pSystem was a good, portable way of writing code.
 
@JeffZeitlin Huh! I would've thought they were still UC La Jolla back then, but I guess that changed as soon as it was built...
 
Pretty much; I'd never heard of UCLJ
UCSD pSystem was essentially the first commercially-viable virtual machine system.
 
@AviF.S. I don't understand the question.
 
6:41 PM
@JeffZeitlin Wow! Impressive!
@Adám Do () & [] serve the exact same role as their double struck equivalents in the original proposal?
That is, does () denote an enclosed section with [] denoting a vector?
 
7:01 PM
@AviF.S. Ah, you mean could one simply replace and and and with (⋄ and ⋄) and [⋄ and ⋄]. Answer is no, not at all. [⋄⋄] denotes a collection of major cells of rank≥1 while denotes a collection of major cells. (⋄⋄) denotes a vector of elements while denotes a scalar.
 
7:16 PM
@Adám Ah, okay! Thanks for clarifying. Why were the meanings changed though? If the original set was capable of expressing all arrays as it was
 
@AviF.S. Which one is the original?
 
I thought the idea for the double-struck version came first...
Curious why the two enclosing mechanisms in the two proposals work differently. Setting aside the difference between (⋄ and ⦅ : Which of the two array methods do you prefer?
 
No that one is only a few days old. And only the double-struck version can express all arrays. The overloaded ASCII symbols can express neither scalars nor empty arrays.
 
If each one was denoted by a single byte anyway?
 
@AviF.S. Not a meaningful question, actually. The whole point of the differences between them is that the overloaded ASCII system takes certain shortcuts because it needs an extra character.
The only reason [⋄⋄] treats its elements as having rank≥1 is to avoid having to write 1-element rows as [1⋄]
And the only reason (⋄) is a vector is because ^ makes it impossible to write a vector.
makes both vectors and higher-rank arrays neat-looking, and so frees up to mean something that the ASCII system can't even express, namely scalars.
 
7:26 PM
@Adám Hmm... will need a bit to process that! No completely clear yet. Will first finish our other conversation!
@Adám If you could give some examples of the ASCII notation in motion, that'd be really useful! Given that I messed it up in my explanation and that it's the current consideration, it seems it'd be nice were it documented here!
 
8:07 PM
@AviF.S. Sure:
 
8:19 PM
[1 2 ⋄ 3 4] ≡ 2 2⍴⍳4
[1 ⋄ 2] ≡ ⍪⍳2
[1 ⋄ ] ≡ ⍪1
[1 2 ⋄ ] ≡ 1 2⍴⍳2
(1 2 ⋄ 3 4) ≡ (1 2)(3 4)
(1 ⋄ 2) ≡ 1 2
(1 ⋄ ) ≡ ,1
(1 2 ⋄ ) ≡ ,⊂1 2
@AviF.S. ^
 
I think [1 ⋄ ] should be ⍪1⍬ (and ditto for other analogous cases)
 
@Moonchild But ⍎'' doesn't give and furthermore, that'd imply that
[
 1 2
 3 4
    ]
should be different from
[1 2
 3 4]
@Moonchild Are you sure you don't mean (1 ⋄ )? Or that [1 ⋄ ] should be ↑1⍬?
 
@Adám This is all immensely helpful, thanks very much!!!
 

« first day (1245 days earlier)      last day (1402 days later) »