@AZTECCO Well, it is basically like SE comments markdown, but you can hover over a message and click ↳ to insert a tag which will ping the author (like @name) and also indicate which message you're responding to.
You can enter )about to learn about the chat bot's features.
@AZTECCO You can evaluate a single line of APL by typing it into chat prefixed by ⍞←. Use ⎕← instead for boxed display and multi-line results and use ⋄ instead to silence the first statement. Use ] to call user commands, including ]help ⍣ for help on a glyph etc. Do not use markdown, but fixed-width (4 initial spaces) is fine. Commands: )lb for language bar, )docs for full documentation, )ref for PDF reference card, )idioms for idiom list.
My programming background? Mostly imperative languages in school, but recently really into Haskell, which is unfortunately not that useful for codegolf.
Oh, that's difficult, I never had a huge problem with mathematics and like solving mathematical problems, but studied a non math related subject in university. So mathematicaly inclined, but the knowledge might n always be up to par. I guess.
Is there a huge difference between the different implementations of APL? Or is it more in the details?
I'd say medium. Basic APL is identical across all implementations, and by far most you'll meet are extremely similar, mostly differing in having two (half-)symbols with swappend meaning, and in their repertoire of auxiliary (non-core) functionality.
@david OK, cool. Well, when coming from traditional (imperative) programming languages, it is easiest to grasp APL by letting go of the notion that it is just a programming language (despite the name!) and instead seeing it as a better alternative to Traditional Mathematical Notation (TMN).
The whole idea behind APL is actually to be a consistent and harmonic notation for humans to communicate algorithmic ideas. Because the notation is unambiguous, it lends itself to machine evaluation too, but that's actually just a bonus.
So, APL takes basic concepts from TMN and generalises them. E.g. - can be used prefix and infix in TMN. So too can all functions in APL be used prefix or infix. We call it monadic and dyadic function application.
Many functions have a close relationship between their monadic and dyadic form, with the monadic form being like the dyadic, but with a default left argument. E.g. - uses 0 as default left argument.
@david Can you guess the default left argument of ÷ ?
That's correct. So in other words, monadic ÷ is reciprocal.
And because f(x) and monadic - take their arguments on their right, so to do all functions take everything on their right as their argument, until the end of the statement (bar parentheses). So 4-3-2 is 3, not -1
There are many names for this. Long right scope. Right-associativity. Right-to-left evaluation. Anyway, it makes for one simple rule instead of a large and confusing (and context-dependent) order-of-evaluation rule-set.
@david You're familiar with notations like ∑ and ∏ in TMN, right?
APL recognises the fundamental idea behind them, namely reducing a list (a vector) into a single number (a scalar) though a higher-order function we denote / (remember that division uses the proper symbol). So +/ is sum and ×/ is product.
Notice that the derived APL functions are shorter than even the shorted mnemonic names for these.
APL also has higher-order functions which takes two regular functions and derives a combined function based on them. E.g. the . combines two functions into a way of application similar to how addition and multiplication is performed when computing the dot product. +.× is dot product in APL, but any two functions can be used.
Oh, APlers tend to call higher-order functions operators and their "arguments" operands.
@david Is this clear or do you want another couple of examples of APL operators?