« first day (1264 days earlier)      last day (389 days later) » 

12:53 AM
@Marshall ...and it's actually a one-liner, that I only sort of understand.
 
 
7 hours later…
7:37 AM
@dzaima so am I understanding correctly that your BQN implementation is using the same code as the APL implementation? Is it a relatively straightforward mapping?
I've been poking at Eiffel recently and thought that it might be interesting to write an APL or a BQN in it. It's kind of a neat idea that you could somehow kill both birds with one stone
 
 
4 hours later…
11:56 AM
@ab5tract It's not too difficult of a conversion but but there are plenty of important differences - in BQN functions can be values (mostly straight forward), but most builtins are completely different, and the code parsing is entirely different (BQN uses this, APL uses this)
@dzaima (of course, the speed boost was due to it giving a wrong output)
@dzaima so the intarr adventures have actually brought me a best time of.. 3016ms. 3% ¯\_(ツ)_/¯
 
12:42 PM
@dzaima (btw finding the source of those errors was a pain - was being called on a vector of 2 "equal" arrays, one a DoubleArr, other an IntArr. Turns out there's a difference between what this and this store to the hash cache variable, and equals cares)..
@dzaima made and return intarrs, 2892ms!
 
1:08 PM
@dzaima revisited
(for comparison, before IntArr)
 
 
1 hour later…
2:43 PM
@dzaima ok duly noted. I may just try and track the BQN development then to keep things simple.
@dzaima Congrats on the ~3x speed bump!
 
@ab5tract (but if you want easy porting of an APL impl to BQN you definitely need the type system to be already mostly matching - have some separate type for the simple scalar numbers, characters, etc, and arrays of those as only an optimization (aka not what J does))
 
@dzaima Duly noted, thank you.
It would be my first foray into writing an interpreter so probably making a single implementation that can technically interpret two different languages is... a bit more than I should bite off to chew :)
I expect to be referencing your work quite a bit. Once again a huge thanks for all that work and for sharing it.
 
@ab5tract right, while being able to interpret both in the same runtime & having interop would be extremely cool, it'd probably be quite annoying to manage :D
@ab5tract be warned - my compiler (BQN - Comp.java) and runtime parser (APL - Exec.java) suck
(the compiler sucks somewhat less due to me somewhat knowing what i'm actually doing and the performance of it not mattering too much, but it's still not that good)
 
3:05 PM
@dzaima I'm not expecting my first round to be amazing either but if you have specific design decisions you regret or anything like that I am definitely keen to hear
 
@ab5tract the whole custom-mini-regex for parsing is definitely not fast (it's pretty easy to extend & manage, but it's 100x slower than whatever Dyalog does)
(tbh i don't know if there's anything else approximately as simple but faster)
 
Theoretically the coolest piece of doing it in Eiffel is that the contracts can enable an architecture that is super well defined. It could even be envisioned as a model first and then implemented against the contracts that are defined during the modelling phase.
Kind of like a Java interface but for an entire system, or at least that's how I'm currently grokking it.
@dzaima This is nice to know. Should be able to define the parser dispatching on a higher level and re-implement without too much trouble. That's what they claim on the packaging anyway ;)
("kind of like a Java interface" but also very much more than that too)
 
3:32 PM
(stupid reason for a cast to a DoubleArr - EmptyArr didn't report that all its 0 elements are convertable to integers if needed, but did say that converting to doubles is fine..)
halved the amount of DoubleArrs created. (:
 
3:43 PM
current status of things (÷ is annoying):
https://dzaima.github.io/paste#0nVTLbtNAFN3PV4ysLhKhtn4kdhJWSd1URWoItFTskB9jYuHOmLGdSCCkLlDEQyCEhCKxzIo/YIlE/sRfwth5jR3jPLwa37n3HN9zzzWEsGoFUOg86Z3a1on5Ggvx/R@BGiMBxvfT8@fzq8BH1qn9hiJHABDC@OP0rRB/@cpypy/63cdQ0C8Q7mJBMOPxNyX@/D7@NLXZsWLOJmb1uDabyLOJxOKVyrFZfRB/@GlXZ79ZTBYE4d3fX/H4hySyB7KUhNd3KAAJ0yUO25S2oEWRESIb1pqarNalh/DECJZ3NbEh1aVmGtNJZHooDcOGKEoa4CJLEFgXxXqjmQGBsClKqpIHUTRRVhUAFmkt7hJGgfESBS3QvjPdoeEhHHYi1wtdDOPxd/iIuPg/74ytxr5NBH0vCvicPqJDI3AJPrq9zQV6PbnH6uREJaC7w/3KEnFr4MrF@/IlhTI4I3d@er86XA8MH63bkQDAaATXwh0kCiOTJBXoDs6ReUYwyKQl4nUJfZVe62SEGSc
 
4:29 PM
....turns out Num didn't report being an integer either. Changes things.. quite a bit:
https://dzaima.github.io/paste/#0nVDLSsNAFN3PV1wGFy3SNk0TxbpqrRUFYwUp7iSPqQTSmThJWlCELqT4QBFBCi6z8g9cCuZP5kucPpMqInpXc88595x7BwDydgC4fmiUHLtonVEsBu@Ym30MYhBvH0@pwCd2yTnnpIMRAIib@AKL@wepjU9azQPAjR1CmxRjSwwfK@LuStzGjnzmrGRk5QtaMlKTUVniuVzByq@K6xcnn7xJTMUYX368iuFzWZEFUjLO9TscoXHSLg1rnFfB5sQMiQO6plbUirIJRTOYc5q@Xt7Q9QnWYJHlkQkMY0cNZZC5CYCuKOW1JZNpqd9MNKlUEJrJqhkSosA8JUEVNdxePXK90KUghk/QIrxnBi6jK@32F8AwVGOxGKKkD2nUf222WNef8AYLs/NpO5Oq6BdLv/5zjhz2ouDv@6moFjI/O9f0GONLQJRuuDimQbjbI84@m7ZHpvyl9Bzp2rXcnukRunTzHnPpD
@dzaima 2581ms \o/
 
Could somebody help me understand how to read a file from a URL (in APL) or point me to some resource explaining this?
 
Yes, I tried that earlier (but thanks anyway) but I'm getting this error:
"cannot find the file "HttpCommand.dyalog" in any of the SALT USER folders"
 
4:44 PM
@mocqoro Can you check if you have [DYALOG]/Library/Conga/HttpCommand.dyalog present where [DYALOG] is the location of your interpreter?
 
Yes, it's there (sorry for taking so long)
 
@mocqoro Then try using the full path instead of just the name.
 
Yes, that works, thank you. Is there a way to "fix" that so I don't have to write the entire path?
 
@mocqoro What does ]set workdir report?
 
[DYALOG]/SALT (where [DYALOG] is the location of interpreter)
 
4:57 PM
@mocqoro That's the issue. Do ]set workdir ,[DYALOG]/Library/Core∘[DYALOG]/Library/Conga -permanent
 
Thank you, that solved it.
 
 
1 hour later…
6:08 PM
it's beautiful with ÷ just doing integer arithmetic:
https://dzaima.github.io/paste/#0U1BQ0EwuVlByCvTTT0nWSyrMU3rUsF@pKLFcSeFRwyLXCIhUcUFqsn5KVVFqmhKXgoLCo85F1UqPevuAahfFB7j5Kyi5uKfmueUpKSU9aptg/Ki75VHXohQgUyPp8PQkTV2Tw9ONDk83BIpraOgmaWo/6piVonl4O1DMSElJqfbQikdtUw0NgEABqARkb0FaERcXyCbPvBLHoiIrheSi1MSS1BQFU1MzE2NDI2sFvcRimJyJmYWxgaE5WMwlvzQpJxUsDAYGXEgiMEMgANUQqHIchnBBlVkhSSqUFiempxZbcXHlpZYrIPRwOefnFig8apuk4JJalFmWmuKbD@GGJAJVOJVm5pRk5gFNNgIA#y0nMS9dQdwr0U9e0BgA
 
7:00 PM
IntArrs pushed. Now to maybe improve some builtins and then check compatibility with the valuecopy stuff (which now needs int[] added..)
 
 
2 hours later…
RGS
8:40 PM
∇ counts ← StudySolvability upTo
    ⎕← 'Starting the study.'
    (reprs values) ← Unpack Combine∘⊂¨ ({∧/2</⍵}¨inps)/inps←,1+⍳4⍴9
    ⍝(reprs values) ← Unpack Combine∘⊂¨ inps←({∧/2≤/⍵}¨inps)/inps←,1+⍳4⍴9
    flat ← ∊values
    ⎕← 'Maximum attainable value is ', ⌈/flat
    counts ← 1⊥⍉ (⍳upTo+1) ∘.= flat

    'InitCauseway' 'View' ⎕CY 'sharpplot'
    InitCauseway ⍬
    sp ← ⎕new Causeway.SharpPlot
    sp.LineGraphStyle ← Causeway.LineGraphStyles.GridLines
    sp.YAxisStyle ← Causeway.YAxisStyles.GridLines
Can someone tell me why the second line I am plotting doesn't show..? On the bottom of my tradfn
 
@RGS Are you sure it doesn't show? It looks like it'd be a constant function (i.e. a horizontal line) since all y-values are the same; ≢inps
 
RGS
@Adám exactly, it should be a horizontal line and it doesn't show...
it should be at 126
 
@RGS Are you able to draw a simple plot with two lines?
 
RGS
@Adám I have been able to draw plots with 2+ lines, yes, but all from the interpreter, typing line by line
 
@RGS And whenever you put such code into a function it ceases to work?
 
RGS
8:50 PM
@Adám now I was able to draw 2 lines with the drawing code being inside a tradfn. Give me a couple of minutes pls
@Adám problem solved; the 2nd line in the tradfn is missing a inps ← (cf. commented line immediately below) and thus the lengths of the inputs to DrawLineGraph were not matching
sorry ^^'
 
:-D
 
RGS
@Adám now that I've got your attention, how does passing a second argument to a tradfn work..?
 
@RGS Left argument, you mean?
 
RGS
Yes. Part of my question was "is a 2nd argument still a left argument?"
∇ returnVarName ← leftArg TradfnName rightArg
    ...
∇
is that the header?
 
Yes.
 
RGS
8:59 PM
Great :-D.
Can I still provide a default value?
 
Yes. Put braces around the name, and then assign it a value if called monadically.
 
RGS
@Adám indeed
@Adám how do I check if it was called monadically..?
 
@RGS If I wasn't around, what might you type into APLcart?
 
RGS
@Adám this xD
and the 900⌶Y link to the docs is broken; is that what I would've wanted?
 
@RGS Yes. I'll look into that.
 
@RGS Almost. Will fix now.
Wow, all the I-beam links broke with 18.0. That's probably a mistake. I'll find out tomorrow.
 
RGS
@Adám good luck
I would also suggest changing the 900⌶Y to something like 900⌶⍬, because the Y there left me wondering what Y was supposed to be
 
It isn't just APLcart that's affected, but even the ]help user command.
 
RGS
@Adám wow
 
I know they did a major restructure o f documentation for 18.0, but I think they're supposed to leave redirects behind.
@RGS Now that I've got your attention, how does a Zoom meeting tomorrow about your upcoming internship sound?
 
RGS
9:13 PM
@Adám sounds good, I wondered if you had forgotten about me or if your meeting had to be postponed. the 8-9 and 14:30-16 timeslots are already taken
Other than that, I am available whenever you are
 
We didn't forget. The meeting was Friday. Let's say 10 then. I'll email you an invitation.
 
RGS
@Adám Yeah now I can tell :D sometimes I can be as impatient as a little kid...
 
RGS
9:34 PM
@Adám received
 
10:29 PM
My BQN compiler (targetting dzaima/BQN bytecode) makes it past the first hundred reference tests now!
 
@Marshall :D
 
10:47 PM
Now passing all of them excluding the ones with curly braces or nothing (·). The second one of those shouldn't be too hard to fix at least.
 
@Marshall the second one should be very simple even (just make all calls be the checking kind :p)
(i wonder if the overhead of having separate opcodes for checking and not checking for nothing is, like, anything)
(currently i'm stuck at being back to ~3000ms with what i'm currently working on (~2500 being the best it was))
seems i never had special code for ∧/ & ∨/ in dzaima/APL?
ah right, i had monadic ∨∧ for that
 
@dzaima I'd rather remove it during compilation.
The dyadic case (ignoring a left argument) is done already. Monadic case is harder, since I need to disappear things.
 
11:31 PM
@dzaima turns out i was being smart and made monadic > give a hint that the contents are all numbers, which makes it use doubles instead of defaulting to checking and finding that integers work fine too. 2340ms now
 
11:45 PM
@dzaima Getting a reftest failure from dzaima/BQN as of 4cbde43. Expression is (<6⥊0)(⊑≡<∘⊑∘⊢)(6⥊1)⥊5.
Also, you can now check the compiler on all the reference tests with $ test/bt -ref.
 
@Marshall an integer Nums ofShape didn't actually use the shape. pushed fix
(i'm still on 90a6f7e950 due to wanting comparable timing results (best now is 2279ms))
 
There's another bug in ∧´⟨1,0‿2,¯1‿1‿3⟩(⊑∘⌽≡(3⊸↑)⊸⊑)⚇¯1‿∞ 2‿3‿5⥊"abcdef".
 
@Marshall reduced to 0‿∞≥2‿1
 

« first day (1264 days earlier)      last day (389 days later) »