« first day (1289 days earlier)      last day (1351 days later) » 

RGS
7:50 AM
@Bubbler what's questionable here?
 
@RGS 's left arg, I guess.
 
@RGS 's left arg should be nested once, and reduction gives a nested result unless the result is a simple scalar.
(I guess shouldn't be there though)
 
RGS
I see, thanks
 
Monadic is probably one of the least controversial functions. Maybe except for Marshall thinking that it is unnecessary. And maybe it should sort its result? Oh well, ¯\_(°∪°)_/¯
 
RGS
@Adám not sorting the result seems sensible to me, actually; no?
 
8:03 AM
Sorting does not fit there because it would break ((≠x)/x)≡∪x now.
 
Iverson proposed monadic as a sorted variant of
 
RGS
8:19 AM
"Even though it is not strictly correct, many people say that APL evaluates from right to left.", in Mastering Dyalog APL. Why is it not strictly correct?
 
@RGS Maybe talking about parens and/or operators?
 
RGS
@Bubbler Maybe operators; parentheses had just been discussed when the author writes such a statement so I don't think he was talking about them...
 
@RGS maybe it's wrt statement separators? In a⋄b⋄c, a comes before b comes before c.
 
RGS
@Moonchild ah of course, that is an excellent point; it might as well be that
 
8:49 AM
Yeah I'd say it's all of those things. I like to focus on operator binding and to say that, generally, functions have a long right scope and a short left scope, and emphasise stranding earlier on to demonstrate this
The truth (for Dyalog at least) is: help.dyalog.com/latest/#Language/Introduction/…
 
 
2 hours later…
RGS
10:44 AM
@RichardPark iirc I saw you/heard you talking about using a Linux VM; is it free and easy to use? can you recommend it to me?
 
11:26 AM
@RGS Yeah VirtualBox is free and easy to use - In particular you'll want to check out "VirtualBox Guest Additions" and shared folders and 2-way copy and paste
 
RGS
@RichardPark thanks a bunch!
@Adám in your keyboard, supposedly AltGr + Shift + F would print the glyph that looks like AE but smushed together, but it doesn't seem to be working in my layout. Is it working for you?
 
@RGS No. I thought it was just my Windows acting up (since I upgraded from Home to Pro). Also AltGr+Shift+5 doesn't produce .
 
RGS
@Adám for me ⌽ works fine
(but the lower case (?) æ works)
 
Yeah, since I barely ever need uppercase æ, and I thought it was only me that saw it missing, I've not bothered looking into it.
 
RGS
11:42 AM
@Adám Yeah I get it, I don't think I'll ever need the AE again, I just copy&pasted it from somewhere else.
another interesting thing is happening, instead of getting upper/lower case betas I am getting śŚ (I think those are betas; maybe they're those weird german symbols)
 
@RGS I moved the double-s to ¨s for consistency
 
RGS
@Adám ß works; probably the picture I'm using as reference is outdated
 
@RGS Æ is also Alt+146 or 1⎕C'æ' :-)
@RGS Yeah, I've not recreated the pic for a while, and the code to generate it has some issues with spaces, iirc.
 
RGS
@Adám once upon a time I knew how to do that Alt+code thing; how does one use that to input characters?
 
DEBUG: Invoke-AplExpression: About to execute: {⍵.Members} Right
⍎ : SYNTAX ERROR

This code sometimes runs, sometimes throws SYNTAX ERROR, depending on the contents of the "Right" variable. How can that change be a SYNTAX ERROR?
 
RGS
11:47 AM
@Adám +← 😥
 
@TessellatingHeckler If Right isn't an object, you can't "dot" into it.
 
@Adám is there a way to poke at it and see what APL is getting?
"everything" "should" be an object
 
@TessellatingHeckler You can do ⎕NC⊂,'⍵' and it'll return a detailed number from this list.
@TessellatingHeckler APL will probably auto-convert numeric, string, and list objects to arrays. APL doesn't allow dotting into arrays unless all their elements are (arrays of) dottable objects.
 
(is "one element of this array at runtime is not dottable" really a language syntax error?)
(rather than a domain error)
 
@TessellatingHeckler Yeah, . is special in being considered both syntax and an operator.
 
11:55 AM
@Adám ok, strings not staying as [System.String] explains part of it
 
@TessellatingHeckler well, it cannot be parsed, so a syntax error makes sense. domain error usually involves something being executed. see e.g. c←+ ⋄ a←'ab'.c
@dzaima (no clue why dyalog decides to point at the in c←+)
 
Also, if . was a pure operator, then a.b shouldn't evaluate until given an argument, just like +.× doesn't evaluate anything until given arguments.
@dzaima Wow, that's pretty messed up, but we are already looking at that issue, iirc.
 
@dzaima it can be parsed, that's why I think a syntax error doesn't make sense. If there was a compile step, it would have to work to emit a valid "apply dot to variable" parse tree because it doesn't know that won't work until runtime and actually seeing the real data
 
12:13 PM
@TessellatingHeckler Dyalog already outputs syntax errors for things that aren't necessarily parse-time problems (of which there's like like... one? mismatched {}s is the only thing i know dyalog must check at parse-time)
ah nope, mismatched curly brackets are fine too. ¯\_(ツ)_/¯
@dzaima might not be the most appropriate to call that a syntax error, but it's reasonable since it's pretty much the same type of problem as the errors in f←1⋄f←+, ∘∘∘, (¨+) & similar
 
 
2 hours later…
2:45 PM
Announcement: I'm speaking about Dyalog 18.0's extensions to in 15 mins on dyalog.tv
 
RGS
@Adám gosh, thanks for the reminder; I read about it today and already forgot
 
 
2 hours later…
RGS
4:28 PM
You can read my thoughts on my work for the Phase 2 here; you can skip the prose and look for the white GitHub Gist rectangles with my code; I have an array-oriented solution for P9 (skip to the very end) which looked different from @Bubbler 's, even though I haven't studied Bubbler's solution well enough. As for @ngn 's solution, I can't tell; I haven't even parsed ngn's code, let alone understand it decently :P
 
Damn, it's amazing that you even think of this stuff
 
4:58 PM
converted that to regular Dyalog, still completely array-y (i.e. all functions are called a constant number of times (if counting +/ as a single function)):
https://dzaima.github.io/paste/#0nVPNattAEL7nKeYWLXZQ1HvBfZQl2k2X6g/tKgoYl9KASY1VXOrSXnoJFHTroQn9gRBw3mSepLMjyXEdcqkORqDvb@Yba8D5CqYHACnwK84/4OIC33/KTpUDbG4gAv9g8xVMVlQOUulKc06MBKSGklkpXn55vmkPcb3E9TWuV4c9JVHahTJJQFfJSVmlYWlOX3oN@8qShO5MjydBhM01Nr@kFri4It2eX1kVD1xmEamGwXNBOV/AzuMptdpaeLBk8Cgc108AZZpXmfNhOmgtj6J96JBgi61Nt63mBxk8IWyyWJ0rHtP0yjDyFL11eDTiA0cWzNFmMtUz8pvQXuqB4zfKUChya5zJM09RRR/qXYDLW1poKugHggQv21LAFJs/2LyhTl8fz7D5FowJKdiIJNP
 
5:14 PM
This mashup is a lot more fiddly than I was hoping
 
RGS
@RGS reflecting on this, I find it much easier to write APL code than to read it. Is this common among beginner APLers? Is it because APL code packs much more information per byte?
 
@RGS "hard to read" is one of the biggest criticisms people raise against APL. I have plenty of thoughts on it, but not enough ability to read APL to make my thoughts very well informed
but I'd say a) different things look the same; using something mondadically or dyadically or with commute is not very obvious at a glance, but changes the meaning significantly. b) I prefer "short" compared to "verbose" but APL world (here especially) leans towards "maximally golfed" rather than "short but expressive" which tends towards more obscure ways to get answers. Presumably more experience makes that easier to deal with.
 
ngn
5:33 PM
@RGS "chukcha not reader, chukcha writer!" :)
 
RGS
@TessellatingHeckler your thoughts express ideas I identify with
 
5:55 PM
@RGS another interesting idea came from an Aaron Hsu talk (IIRC); he suggested that if the code is short enough, it becomes possible to avoid reading it. If it works, then leave it alone. If it doesn't work, throw it out and rewrite the short code which does what you want, instead of trying to re-read the other code and debug.
Something you resist doing when you have pages and pages of traditional language code, but can do more easily for a couple of lines.
 
That's one of the things that I still don't like, the idea that some things in your code should be a black box
 
@rak1507 Is it really a black box, or is it about the feeling of it being a black box? I'm not a real programmer but I look at huge amounts of traditional language code and even when it's neat and tidy and well spaced out, uses English-style names, it's still difficult to understand what the whole thing does because there's so much of it.
 
Fair enough, but just because of there being a lot of code in some places, doesn't mean you can't easily understand at a glance what one bit does (in theory)
 
e.g. this is part of Windows PowerShell, it is written in C# and implements Get-Hash cmdlet for file hashing.
it's pretty idiomatic clean and clear C# and "feels readable". But for all the 300 lines of code, what it really does is hasher.ComputeHash(openfilestream);
a black box library call
 
@TessellatingHeckler so.. many.. pointlessly short lines....
 
6:06 PM
The point of that code isn't to do the hashing process, it's just to handle the command, which it does
A lot of that code is just handling various scenarios
 
@dzaima (personally the first thing i'd do is make each errorRecord thing be in a single line; they don't matter that much)
@dzaima (also why is each property a minimum of 12 lines)
 
@rak1507 isn't that where the "ability to understand at a glance what one bit does (in theory)" breaks down in practice - because there isn't "one bit" anywhere to look at, it's all aerosolized and fragmented in many small places spread over lots of helper code?
 
Yeah, fair enough
 
there's computeHash, one of many, and getting another layer further down ...
still in the "handling various scenarios stage" but now another layer down
 
Yes, I see your point now haha
 
6:15 PM
@dzaima all the getters and setters?
 
@TessellatingHeckler yeah
 
nevermind, Visual Studio will type them in for you so it's "not a problem" (o_O)
if I put my powershell dll online somewhere, would any of you try it?
not to bash for problems as there are plenty, but to see if it works?
I'll have to notice @JeffZeitlin at some point, he's mentioned PowerShell in here :)
I copied

⎕USING←'System'
Type.GetType ⊂'System.Double[]'

from the help, and it throws a Syntax error
is it only valid when bound to the variant operator?
 
6:33 PM
and to dzaima/BQN (generating the args to `⌹`; still using •vi←1 as otherwise it'd be even more ugly):
https://dzaima.github.io/paste#0jZPPattAEMbveorBuUiYVFHPbp@gL7GNdp2l@od2FRlCwCdjqTY44JCLCyEQUE695NBLU1CPfot9gjxCZnclmZoWqoM0XmZ@M/N9azV/uORqsQmcGAC/cPXx9dvtk1rc7Hdto1bL9llV922jD6/V/OFTImCUEXnhy9SP0888ou/kTI6cSM1/EYav3GBiVf/40DYjtV2p7bPabkagnxOIKJM@iSJgRXSeF7Gf8@mFhJiIL8JhdoYztXpxXVXftI1PmIcojD0gTAMKQcO@2JQ5JXQtlzVOSOCP5wRKOnRwSmJSx7jVY13@I5PEaZFIh9nckpwGx4l9@y6z5CYzGKvFbUn@DuVJSGcUV@QdFca2gA38o936CpKZCsa1KgzF8L3SxKWNsU7radIhSwWXPE2EQ22ZG6llk3tw5WoL/f3O2Fvdn3kagT8aQ9HBtT5BXdS6QrEz5MbpJdVRkY
 
6:51 PM
With lots of parameters and a long right, I can't think of a way to distinguish `f X1 X2 X3` from `X f Y1 Y2 Y3`.

PS C:\> ⍎ "+/" 1 2 3 4 5
PS C:\> ⍎ 3 "+" 1 2 3 4 5
the command needs to become a string for hydrant, and the rest need to go in variables because they might not be strings or able to serialize to strings. But they could also be strings, so looking for the only string and choosing that as the code will be unreliable.
that leaves me with a) unreliable. b) mandatory 2 and 3 parameters only ⍎ "{+/⊃⍵}" (1,2,3,4,5) or c) only one them can take a long right and the other can't.
 
 
1 hour later…
8:01 PM
@TessellatingHeckler Why not have two s, one for monadic calls, and one for dyadic calls?
 
8:27 PM
@Adám I'm resisting that because it feels so inelegant, and it doesn't completely solve the problem. Then the one for dyadic calls still can't handle 1 + 1 2 3 separately from 1 2 3 + 1 2 3, it has the same problem of "where is the code?" again.
 
@TessellatingHeckler is there a reason ⍎'(arg1) (arg2) (arg3) (arg4) …' couldn't work?
 
@dzaima The arguments are actually PS arguments.
 
@dzaima my dream is to pass powershell data in, and that means it can't all be string
 
@TessellatingHeckler Does PS have an array notation?
 
@Adám It has (1,2,3,4) to make an array, yes.
 
8:30 PM
@TessellatingHeckler right, for some i thought it'd work, but of course it doesn't. As there's no way of differentiating a string as the code and as an argument, there just isn't a solution
 
@TessellatingHeckler And the elements can be anything, even objects?
How about an empty array?
 
@dzaima I'm currently hoping to distinguish cases where the code is a string and the arguments aren't, but I can't even get that far.
@Adám yes they can be anything, heterogenous types, object (references). An empty array is @()
I could limit it to ⍎ code psarray and ⍎ psarray "code" psarray and nothing else
 
Exactly what I was about to suggest, except one more case: ⍎ "code"
 
and that one
but I want PS C:\> ⍎ +/ 1 2 3 4 5 to work, because it feels like it should work
at the point of PS C:\> ⍎ +/ (1,2,3,4,5) that arrives in Dyalog as a scalar of a nested(?) array
so then it has to be PS C:\> ⍎ "{+/⊃⍵}" (1,2,3,4,5)
which is ugly
 
@TessellatingHeckler - are you looking to insist on an APL-like syntax within the PowerShell console, or would PowerShell-style syntax be acceptable?
 
8:35 PM
@TessellatingHeckler No, I'd expect the array to become 1 2 3 4 5 in APL.
 
@Adám it currently doesn't
 
@TessellatingHeckler Why don't you have the cover amend the code then? ⍎ "{+/⊃⍵}" (1,2,3,4,5) should call {+/⊃⍵}⍥⊃
 
@JeffZeitlin I'd prefer APL-style as closely as possible. ⍎ -X (1,2,3) -Code "+" -Y (1,2,3) would work, but again is ugly
 
@TessellatingHeckler - well, you can allow the parameters to be positional, that's OK, so you could use ⍎ (1,2,3) "+" (4,5,6)
 
@TessellatingHeckler is that some restriction on the .net interface or your code? it feels like it should be possible for it to just be the array it should be
 
8:40 PM
@Adám {+/⊃⍵} does work, it doesn't need ⍥⊃ on top.
@dzaima I'm not following what you mean there. Certainly the Dyalog Bridge is doing some kinds of conversion, Strings apparently stop being System.String and start being character vectors
I can't work out how to tell "string" from anything else on the APL side
 
@TessellatingHeckler - what occurs to me, however, is that the way I would think to implement it would be more-or-less as a single function Evaluate-APL or some such, taking a single string as a parameter - the APL expression to be evaluated.
 
@JeffZeitlin that would likely work if I didn't also want to support a "long right", then the positional aspect breaks things
 
@TessellatingHeckler No, I mean you wrap any code in ()⍥⊃ so the code doesn't need to disclose.
 
@JeffZeitlin That part works fine, but then I can't do ⍎ {⍵.Members} (get-childitem) because the directory entries aren't strings
 
@JeffZeitlin Right, but they want to allow PS objects to be fed directly in.
 
8:43 PM
@Adám you did write {+/⊃⍵}⍥⊃ in the message. i suppose you wanted to show the PS being ⍎ "{+/⍵}" (1,2,3,4,5) calling {+/⍵}⍥⊃ in Dyalog
 
@dzaima Yes.
 
I can make almost any of these work on their own, I can't so far bring together all of them in one
 
Hmmm... Most PSObjects have a method .ToString; somewhere along the line, you need to use that, I think.
 
@TessellatingHeckler is the problem that passing a string results in an (unenlosed) character vector but (1,2,3) gets passed to as an enclosed array?
 
@JeffZeitlin No no, we want the objects carried over as proper objects.
 
8:46 PM
@Adám I think with that one, if I had ⍎ +/ 1 2 3 4 5 then the disclose would pick the first element. 1 2 3 4 5 arrives differently to (1,2,3,4,5)
 
Hmmm...
 
@TessellatingHeckler Right, so always require arguments being arrays, and the code being a string. That's unambiguous.
 
@JeffZeitlin Dyalog's .Net extensions should mean it can access all the properties and members, and return them to powershell "live". I've even got it updating the contents of a hashtable defined on the PowerShell side :)
 
@TessellatingHeckler if arrays work properly, you don't need long scope and can just have the 3 different evaluating modes. And when you need to pass >2 objects, properly create an array of them
 
@Adám it is unamibiguous, but limited and inconvenient. If I'm forced into that corner, I'd rather go for ⍎ and ⍎⍎ or something
@dzaima "need" for functionality, no, but typing (1,2,3,4) instead of 1 2 3 4 is more than double the annoyance
 
8:49 PM
@TessellatingHeckler How is it limited? The parens and commas are inconvenient?
@TessellatingHeckler I doubt you'll often need such a literal. Then you can simply do ⍎ "+/ 1 2 3 4"
 
@Adám yes they are inconvenient
 
> I found nothing to looked suitable
 
@TessellatingHeckler if you do plan to routinely pass >2 arguments, then i guess you're on your own, don't think there's any way to get it to work without some edge-cases
 
> I am (…) but the judges of the competition may not!
 
@dzaima actually, you could just have ≤3 args be the niladic/monadic/dyadic call, and the with any more make it be a monadic call with an array argument. if you're passing >2 objects, you'll need to unpack all-1, then why not unpack all?
 
8:54 PM
fwiw, Dyalog only allows an auto-unpacking name list in the right argument.
 
@dzaima I get that I'm being stubborn about trying to find a way through an unreasonable requirement set; the more it deviates from APL, the more that bugs me and the less nice it is. Having almost the option to provide a long right with a space separated array APL style.. and then having to give it up just because I can't tell string from not-string, and the powershell binder can't either, pains me.
 
@TessellatingHeckler "tell string from not-string" as in you can't determine what it was in the commandline, or the type of a variable?
 
@TessellatingHeckler How about this: ⍎ 3 10 20 "↓∘.+" 100 200 300 400 where the first argument indicates the index of the code argument?
So this would evaluate to 10 20 (↓∘.+) 100 200 300 400
 
@dzaima as in string and int both seem to get ⎕NC 2
 
@TessellatingHeckler Sure, they are both arrays. Look at ⎕DR to determine type.
 
9:02 PM
and I can't call x.GetType.Name because it unpredictably SYNTAX ERRORs on me
@Adám !
 
@TessellatingHeckler Objects should get a 9 from ⎕NC, btw.
 
@Adám I have seen a 9.1 (good score :P) but System.String doesn't seem to end up like that after crossing the bridge
 
@TessellatingHeckler Right, it gets converted to an enclosed character vector.
 
@TessellatingHeckler so you first check ⎕NC, if it's 9, determine type as .net, if not, as an APL array
 
@dzaima Might want to do on enclosed simple charvecs.
 
9:07 PM
(also to note is that for some reason ⎕using←'System' gives me Could not load bridge interface functions. (Error 0x00000000: "libhostfxr.so: cannot open shared object file: No such file or directory") so i can't really play around myself)
 
right, with ⎕DR I can do a heuristic:
If there's one string, `⍎ code`.
If the first thing is a string, `⍎ code Y1 [Y2 Y3...]`
If there is a single string anywhere `⍎ X1 [X2 X3...] code Y1 [Y2 Y3...]`
If there's more than one string, clearly error and force more typing.
@dzaima does that imply Linux? Then you would need .Net Core and the new .Net Core Bridge, and maybe PowerShell core one day; I haven't tried to look at that
@Adám At what level does that happen? I haven't found (or really looked for) a "how the bridge works internally" document. Presumably objects aren't searched for string properties and all converted, only simple strings passed directly in?
 
@TessellatingHeckler it does; i haven't tried looking into it, but i had assumed it'd just work as i thought i had c# installed
 
@TessellatingHeckler I'm not sure either. I suspect that it happens "JIT" as in when any string object is encountered from the APL side, it is immediately replaced with an enclosed vector.
 
what's a way to return from a tradfun (class method)?
→0 or something like it?
 
@TessellatingHeckler Yes, or :Return
 
9:21 PM
@Adám ta
 
RGS
10:10 PM
@Adám should it be "I am (...) but the judges of the competition may not be"? Also, thanks for catching the two mistakes :D To be 100% honest I didn't review the post because I was in a hurry to leave the house but I was dying on the inside to post it... so yeah :P
And how on Earth did you reply to my message without writing @RGS?
 
10:21 PM
@RGS starting the message with > makes it a quote, which for some reason (similarly to multiline messages) doesn't include the @.
 
RGS
> ah, I see; thanks
 
what if my ⎕DR says everything is type 326 Pointer (32-bit or 64-bit as appropriate)
can I dereference pointer?
 
@TessellatingHeckler .net objects & namespaces are always pointers (what else could they be?). what would dereferencing one mean?
 
@dzaima if I set the input type to System.Object then what arrives is a System.Collections.Generic.List1 and then I use ⌷AplInput` and materialize it into an array, and it contains integers and charvecs.
Instead, if I set the input type to PSObject[] then what arrives is an array full of 326 pointers
I can't get the integer values or the string text
What it would mean to dereference one is, do whatever the other way does
 
@TessellatingHeckler assuming c# works how i'd assume it works, a PSObject doesn't sound like a superclass of int so it makes sense it wouldn't be converted to an APL number
 
10:43 PM
@dzaima I believe int is an unboxed primitive in C#/.Net, not sure how that fits into the object hierarchy
but, believe it or not, despite not being an object, it is documented as inheriting from Object -> ValueType -> Int32
anyway, PSObject is special in PowerShell world
because PowerShell has an extended type system wrapped around .Net types, so it can glob on more convenience methods and properties, but still pretend the types are unchanged
and I'm wondering if the bridge is stripping that bit off, and maybe that's why I can't do things like ⍵.Name on a directory item
that's what I was hoping to find out by changing the input to PSObject[]
but when I do, I lose the ability to write any code to execute
 
@TessellatingHeckler i'd assume there is some way to convert the PSObject back to a regular .net object, and at that point, if it were an int, it should magically convert to an APL number
 
10:58 PM
@dzaima hmmm, I'd assume something like that
so far so good with my earlier heuristic, executing single code works, long right argument works, long left argument works!
 
11:24 PM
If I did what Adam was suggesting earlier to flatten an array and always used ⊃, how could I stop it from picking the first character of a string? Is that where nest comes in?
 
@TessellatingHeckler Probably yes, since nest is essentially "enclose if simple".
Or maybe you can get away with enlist .
 
@TessellatingHeckler is it really the case that you get either a vector of characters or an enclosed .net object from the same source depending on whether it's a String or not?
 
whyyy is there ravel and enlist and materialize
@dzaima what's really the case is that I get ??? in side APL, and have no clue to find out what I have or why, and a really long edit/build/run cycle to make any change to investigate
 
@TessellatingHeckler but you have a command-line way to evaluate any APL on what you want to investigate!
 
@Bubbler enlist looks like flatten, which isn't what I want
@dzaima APL has nothing on PowerShell introspection
@dzaima In powershell I get data back, in APL I get SYNTAX ERROR or VALUE ERROR back
 
11:41 PM
> If I did what Adam was suggesting earlier to flatten an array...
 
@Bubbler ah yes, don't trust me to know what I'm saying :facepalm:
@Bubbler something like 1 2 3 4 stays unchanged. (1,2,3) 4 5 stays unchanged. (1,2,3) gets picked to 1 2 3
and I don't know exactly what powershell is sending into APL to know what that operation needs to be
but when I send (1,2,3) in, then I need {+/⊃⍵} and when I send 1 2 3 in then I need +/⍵
is that ... boxed? unbox one level if an array of one element?
 
@TessellatingHeckler If 1 2 3 and (1,2,3) gives the exact same array, you simply can't distinguish the two inside APL.
 
they don't, 1 2 3 gives a vector of numbers, (1,2,3) gives a ... boxed vector of numbers, maybe?
 
@Bubbler they're not the same is the point
@TessellatingHeckler ah, that makes sense. is the list of arguments, so if there's only one argument, it's still a list of the single argument
@TessellatingHeckler for one, you could try doing ⍎ ⍴ 1 2 3 and ⍎ ⍴ (1,2,3) in PS
@dzaima (i suspect the results would be 1 and 3)
 
@dzaima they are 1 and 3
wait
which code am I running
 
11:47 PM
@TessellatingHeckler so if you want the commandline to behave exactly as APLs strands (i.e. one space-separated thing is itself, >1 is a vector), you want to disclose if there's only one item, otherwise keep it an array
 
@dzaima that makes sense, I think
 
@dzaima example
 
@dzaima that looks just right, except ⊃⍣(1=≢)⊂1 -> infinite loop?
 
@TessellatingHeckler that's "get first until length=1" which will never be true for a simple scalar
you unfortunately need to give a number right operand, a function doesn't work in this case
 

« first day (1289 days earlier)      last day (1351 days later) »