« first day (1131 days earlier)      last day (1539 days later) » 

8:45 AM
progress:
https://tio.run/##tZVLb9NAEIDv@yvmFq@Iql27ietLUZI@eJbHqdckLSTQlkehUBASaiWIohi1IohcuMClh0g54CsX80vwHwkzXie2EzsPUqT1eu3Z3Zn5Zna2Wj44Kh/2@6vwNrOdeefZ3zVN95qnXJPUc9Ak6FwzYJkzr93y2u8HrRsZn6HsRMI29jgTe/xuR@ROZNxhq5Cp1TNzqErXOZg3FJxFTTghq/Cp1dUYAIaCdtywTlTcTtI96oMUXqPz@yu5oYPvwWysQlw62Sqm8UpQhyPU59k/DNQZKuWaloM810xY4akI02wabzHACfwnSoMJgyAoX31XVUNDsUdLhfqOBiWB90RpMCEtcGlrxluHIWiv@ZH4fvpSAITtNZogASOMTfdsJw85WAbkboaEu1MYFpIStRtjBIpCEZ@Ndew2QyqBiF5rpfA7FI1ksjMOxJnk8qjHmqHSC9D1/5ZeC@XWWGKVkhJr8by6hKRKyCjk@@F8Abbzgf0nqoXiXFAvk@g0nEiz1VA11@0RSY4H0sSDiXj3WLlS3Vnf2GS1@qPHt25vsSdPnz0/fPGSHb16ffymX
 
@dzaima You don't need our help :-) Uh, ,∘1⍢⍴2 2⍴1 doesn't make much sense.
 
@Adám i started thinking of as "to" (e.g. 10∘+⍢(2↑) being "add 10 to first 2 items"), so "append 1 to shape" kind of made sense, but you're probably right
 
@dzaima Interesting. And 1∘+⍢(≢⍴) would increase the rank? 1∘+⍢≡ would increase the depth? 1∘+⍢≢ would add one more major cell?
 
@Adám what would the structural inverse of be? Of ? My rule with was that the product of the result must still match the input, i.e. no items are lost or added, but that doesn't make sense for neither nor
 
@dzaima Counter: Inverse of
 
8:56 AM
@Adám I disallow 1∘↓⍢∊⍳10 (currently as a Java error, will add a pretty one later)
 
@dzaima Sure, but ⊖⍢∊ works, though is not invertible.
 
@Adám and that should just work, no? It doesn't add or remove any items, just replaces them
 
right.
 
also, 1∘+⍢| ¯10? it'd be such a nice-to-have but really doesn't make sense as structural inverting
 
@dzaima No, that's computational, but | isnt invertible.
 
9:02 AM
@Adám dzaima/APL errors on |⍣¯1⊢2, so, by my current rules, it'd be perfectly okay for it to implement structural inversion
 
@dzaima What about -⍣¯1?
 
@Adám technically it could be structurally invertible, but so could all computationally invertible things (hmm...)
 
@dzaima Yes, you have to analyse the operand. I got Marshall's permission to send you our materials, now for the CTO…
 
e.g. what if I want ⌊⍢(-2∘↑) (a roundabout way to do ⌈⍢(2∘↑))?
 
@dzaima I'm not sure if hybrid structural/computational under can be handled, but maybe if it is possible to break down the operand into multiple applications of under. It is the same as ⌊⍢-⍢(2∘↑) which should work.
 
9:11 AM
@Adám just make everything "structural" inversion! ("structural" meaning "requires context of original to work", probably passing null if it can't be retrieved. This runs into the problem of there being (lame) customly definable structural inversions, which runs back into the issue that for f⍢g i'm effectively calling g ±twice)
 
@dzaima Yup, my model calls g multiple times too. That's why it needs a check for side effects.
 
10∘×⍢(2∘↑,¯2∘↑)? that's something my current model can't represent, but neither can Dyalog (17).
 
@dzaima Right, but I think that will work in 19.0. It is just a matter of applying g to the "indices".
By "indices", I mean (⍳≢∊Y)⍢∊Y
 
unrelatedly, i'm caving in and defining (f⍤g) A as f g A. :)
 
To darn obvious, isn't it?
 
9:27 AM
@Adám too many times of me trying to use it :p
also unrelatedly, before today, all of 1+ᐵ1, 1+ᑈ1, ⊢@1⊢1, ⍉1, 1%1 1 gave enclosed simple scalars (or an assertion error), and ⎕VI←1⋄2@1 ,1 gave a scalar, and 1≠'a' was 0. ¯\_(ツ)_/¯
 
@dzaima %?
 
@Adám my "merge" thing - ⎕IO←0 ⋄ 1 0 1 1 0%'hello' 'HELLO' gives 'HeLLo'
 
9:50 AM
hmm, 1∘+⍢(-@(<∘0)) 1 ¯2 3 4 ¯5 ¯6 could be seen both as structural and computational inverse, both doing different things. :/ (i currently don't have any inverse for @ defined so i could still go both ways, but that in itself is bad)
 
@dzaima How can that be structural?
 
@Adám (again, i'm using "structural" in place of "requires context of original to work") the structural inversion of @ would use the original ⍵ as the value to call <∘0 with
 
@dzaima Ah. Again, you can solve this one by breaking @ down into a call, each with its own context: 1∘+⍢(-⍢((<∘0)⌿))
 
that's not nearly as pretty though. (knew i missed an important structural inverse - ಠ_ಠ)
 
10:07 AM
that should be 1∘+⍢(-⍢((<∘0)⌿⊢)), which'd (because forking) require usage of <∘0 - any generic function - while inverting, making the double-calledness visible!
 
@dzaima Typo. But, no, you just have to prohibit functions that can detect being called. Hence my original question about side effects.
 
i'd rather not introduce more meta-subfunctions to functions. so {1∘+⍢(-⍢((⍵<0)⌿))⍵} 1 ¯2 3 4 ¯5 ¯6 for 1∘+⍢| :p
 
10:23 AM
anyway, pushed. Leaving @ with no inverses for now
 
⍞←-@(<∘0)⍣¯1⊢3 ¯4 6 ¯3 0
 
@Adám 3 4 6 3 0
 
@Adám but if you think about it, that's illogical, as -@(<∘0) would never give a result containing negative numbers, so negative numbers shouldn't be valid input to -@(<∘0)⍣¯1
(i think that has made up my mind - no computational inverse for @, at the very least)
 
@dzaima You're right. I'll report this.
 
@Adám a request to remove f@g⍣¯1? :p
 
10:32 AM
@dzaima No, just to have it check its result. We have two types of inverses; "trusted" inverses, where we blindly rely on a formula, and general inverses, where we test that f f⍣¯1 gives the original argument.
 
 
1 hour later…
11:40 AM
multiple headaches later and oh nooo i do have O(n²) because of not keeping originals D:
eh whatever ¯\_(ツ)_/¯ (also i don't know if i'm gonna keep ⍢f@g implemented)
 
 
6 hours later…
5:27 PM
@dzaima Approved and sent.
 
 
4 hours later…
9:21 PM
uh oh. To fix or not to fix?
 
@dzaima Looks correct to me. The equivalent of:
⍞←⍳∘≢@1 2 2 2 3 6 7 7 8⊢10⍴0
 
@Adám 1 4 5 0 0 6 8 9 0 0
 
@Adám I was thinking about that too, and both of these are wrong-ish. The case is pointing at the larger problem of the same value being overridden by different things though - what about {'abcd'}⍢(2∘↑,2∘↑)? (neither Extended nor my impl allow for it, but a similar thing - f⍢(2∘↑,¯2∘↑) - could be useful)
related - in my impl this errors because of this exact problem which i just hoped i could entirely avoid everywhere :/
 
@dzaima Firstly, overriding isn't necessarily wrong, though the classic A[3 1 4 1 5]+←1 is useful at times.
Problem is of course that this implies ¨ in modified assignment, whereas it is useful for @ and to not have an implied ¨ so things like ⌽⍢ and ⌽@ can work.
 
10:22 PM
implemented (f⍥I) A, and found a solution to me not liking Extended applying f on non-depth-I subarrays.
 
11:07 PM
also a bit of ⎕DR (clearing up unpushed changes because i don't want my android builds to have unreleased features :P)
 

« first day (1131 days earlier)      last day (1539 days later) »