I'm trying to think of people who are in the BAA meetings often, I'm not very good with names, the other Ray who's not Ray Polivka? There are definitely others who look like they may have had a long history with APL but idk whether or not they have
> Includes brief presentations from Ray Cannon and Morten Kromberg on the PiRatBot and DyaLegoBot respectively, followed by a demonstration of how one/both of them perform in a maze and an opportunity to play with some of Ray's other components.
@RikedyP Do you know where the recording of that is?
@Adám Could you please at least check what Roger has to say if you're going to rewrite the entire APL Wiki to say Iverson invented Rank? Something someone says offhand in a conversation just isn't reliable, especially with written evidence to the contrary. In most places there isn't even any need to make the claim: just say Whitney made the connection between leading axes and Rank, so SHARP adopted Rank as a result.
It's also stated in the HOPL IV paper, so at least Morten has confirmed it presumably. The paper also cites Bernecky's "An Introduction to Function Rank", but I don't have access to it.
Announcement: As the the Dyalog comp has now closed, I've just published my intro to APL book: xpqz.github.io/learnapl/intro.html. If you find any errors, I'd appreciate you raising an issue in github.com/xpqz/learnapl. My thanks to @RGS and @rak1507 for reviewing -- any remaining errors are 100% mine.
A lot of the stuff I cover have originated as conversations here as part of my own learning. I've tried to be as dilligent as possible with attibutions, but if anyone feels I've not noted sources properly, please let me know.
@PyGamer0 The joke is that in the book, they've invented an incredibly powerful computer that can answer any question (a bit like what search engines are today, almost). They then ask the computer "what is the answer to the ultimate question of life, the universe and everything?" and it sits and thinks/computes for a very long time before giving the answer "42".
@xpqz I've had a quick browse before, and I'm gonna have a bit of more in-depth browse this week, but in general I have to say this book is really, really great
wow that's extremely surprising, I wonder how many of those are actual APL developers and not people that have heard of it once, people who do something else with the same acronym, or people who just put all of them for fun
@PyGamer0 If it's compiled, you can write the first compiler in A, write the second compiler in X, compile that using the first compiler, and then say X is written in X
@PyGamer0 there's a language BQN which has a implementation in JS, which once was 140 lines of JS, and the parser and most of the builtins are written in BQN itself
@dzaima (source code (be careful to not hover your mouse over lines 110 or 139 or the tab will freeze :D))
True, but it looks like everything is squished together, and a lot of the variable names are one letter long and don't give any clues as to what they do
@user I'd probably have some spaces after inline semicolons if I'd have written it, but otherwise many variables either have comments, and the ones in L47-57 just make sense if you understand what they're actually implementing
@EliasMårtenson Perhaps. But I look at it as code written in a language unknown to me (although I do know C...), implementing an interpreter for another lanuage unknown to me. I think a week is pretty good going.
I don't deny that it's possible to understand that style. Perhaps if the goal is to weed out people not willing to parse it, it may serve a purpose. I mean, Lisp code in the 70's was written like that too, but once monitors got larger and editors more useful, they stopped.
@xpqz It's not a particularly large program though.
Sure -- it is not. And I think once you stop thinking about it as C and get your eyes tuned to it, understanding what it does is probably OK. Much like the same experience as learning APL for most people, I guess.
Running the preprocessor and pretty-printing it would be interesting.
@xpqz which makes me think that whitney-style code suffers from a major issue that APL code suffers from - code without context becoming completely unreadable
@dzaima (which isn't really an issue if you're the only one reading and writing the code, but sucks for all other cases. Also incentivises having little code so there's less to forget (i'd guess this is part of the implicit reasons for wanting small binary sizes))
@user The missing spaces after semicolons aren't my usual style. Before that I'd been working with ngn/apl to make it run BQN instead. I change style to match the existing codebase if there is one and I guess that stuck for a while. In other places I tend to use spaces to group things into logical sections. That means operators that combine these sections need to have more space than ones that work within sections, so I default to no spacing so I can add it to show structure.
To me code with exactly one space everywhere is about as readable as code with no spaces.
@Adám OK, I do find the rendering of 333 to have some issues. The kerning for ∘.+ looks really weird, with the plus sign almost overlapping the period.
@Adám right, word processor tabs are probably the only sane mid-line way of doing tabs (but just don't work without somewhere to store user-defined tab positions and forcing a specific font)
Sounds good. Of course I'm most interested in BQN right now, and it occurs to me that there's a fair amount of overlap with my Dyalog talks if we're going into implementation.
Going right after Henry is kind of cool. "You've met the teacher, now meet the student!"
Say I have a nested array: ↓,∘≢⌸1 2 2 6 6 6 6 7 10 ┌───┬───┬───┬───┬────┐ │1 1 │ 2 2│ 6 4│ 7 1│ 10 1│ └───┴───┴───┴───┴────┘ How do I take the "maximum sub array" by only comparing the 2nd element. So the answer would be: 6 4
Is that the simplest way? : ( I was hoping something like the PSI combinator (⍥) could be use here ... but it doesn't look like it (⌈⍥⊃∘⌽)/↓,∘≢⌸1 2 2 6 6 6 6 7 10
@code_report Its actual definition is that it discards elements in the right argument corresponding to 0s in the left argument, and begins a new partition in the right argument whenever an element in the left argument is greater than its neighbour on the left. (With an implied 0 before the first element.)
Hey all, just taking my first steps in (Dyalog) APL and I'm having this strange issue where the first time I ran it, ctrl+c, ctrl+v, and ctrl+x produced set functions as expected, but in subsequent sessions, these three keys have the normal windows cut, copy, paste behavior.
Any ideas how to make it work the expected way again?