@petStorm If I'd written that, I'd have shown that I don't know how to spell-check ("fillling") or how to apply markdown correctly (text in backticks).
@petStorm Right, but there's no need. The transcript is available. If you want to write summaries of conversations, I suggest you do so for the past chat lessons. That could be valuable.
Two ways. Firstly, it was introduced in IBM's APL\360 as a way to call special IBM services. Call IBM → I-Be-Em → I-Be-am → I-Beam and it looks like the identically named construction material in cross section.
Secondly, many of the integers are chosen to make a pun. E.g. 201 is Roman CCI for "Colour Code Information" and 819 looks like the letters "BIg" as in big letters as in uppercase.
@HighlyRadioactive The undocumented ones are… undocumented (except for internal documentation). The public ones (and one or two "secret" ones) are listed on APLcart and in the main documentation.
@HighlyRadioactive Right, it is intentionally kept this way to avoid people relying to much on them. One should always use a cover function as they can change or disappear without notice. They provide a mechanism to try out things before settling on a final name or design. E.g. We've had 819⌶ for changing character case for a while. 18.0 finally gets a proper ⎕C function which takes arguments that are not like those of 819⌶.
Yes, it takes a token and "holds" it until released. Any other thread attempting to hold the same token will pause until the token is released, at which point it takes over that token hold. This way, two parallel threads can make sure that e.g. only one of them modifies the database at any given time.
@HighlyRadioactive Right, despite first appearances, (Dyalog) APL does come with most of the features you'd expect from a normal programming language — things you'd expect an eso/gold language, not to have.
@petStorm 1) The ⌶ on TryAPL is "fake" to restrict you from dangerous calls. 2) it derives the function 2⌶ and returns that.
@HighlyRadioactive In a sense. Operators do not inspect their operands until function application time, and since 2⌶ doesn't exist, there's no valid argument for it.
@petStorm If you tried using a real interpreter instead of TryAPL, it'd give you a clearer message:
2⌶'abc'
DOMAIN ERROR: Invalid I-Beam function selection
2⌶'abc'
∧
@Adám i unfortunately seem to have overriden my (dzaima/APL) REPL history (rlwrap doesn't like multiple REPLs open at the same time), but there were some things missing, and indeed that secret one
@petStorm - Says who? I haven't paid for it, and it works just fine. I may end up paying for it, depending on how a project goes, but for personal use, it can be free.
@HighlyRadioactive OK, now let's learn about comparison functions in APL. You've already seen that assignment is ← so = is free to use as proper comparison. APL has none of the == and === nonsense of certain other languages…
@petStorm Sure, and here, Replicate is the right thing to use, as we're returning values, not counting them.
@petStorm Now write a more general function which takes a left argument (⍺) and returns numbers from the right argument that are evenly divisible by the left argument.
It's a nice thing to have multiple projects to work on at the same time - so that if you get stuck on one of them, just switch to another. -- My TODO list
Well, not too good when one is a competition and the other one has to be done tonight.
@RGS Yes, this is annoying. At least we're getting an OK mitigation in 18.0. Here, since you have a parenthesis on the left, and anyway use ⍨, you might as well use only one: ⊢(/⍨)0=| It won't even be any shorter in 18.0: ⊢⊢⍤/⍨0=|
@HighlyRadioactive Sure. But if you want, you can jump straight to the generalisation of taking a left argument and returning the elements from the right that are divisible by the left.
@Adám I am going to install the APL kernel and give it a go. I will have a go at summarizing one APL Cultivation lesson into a jupyter notebook and then I'll share it with you to get some feedback.
Given the perception you have of what I already know of APL, what class would you suggest I start with?
@RGS That'd be amazing. You don't need to follow the lessons exactly 1:1. Look at the TryAPL lessons under the heading "Closer Looks at Some Functions" and select another group of functions for such a lesson.