@KritixiLithos For simple terminal-style interaction, we've got ⎕ and ⍞ which are kind of special variables. If you set a value to ⎕ it means output to STDOUT (with trailing newline), while setting ⍞ means STDERR (without trailing newline).
If you query the value of ⎕ it means get evaluated input from STDIN (i.e. whatever the user inputs will be executed as if typed into the session, and the result is the "value" of ⎕. Getting the value of ⍞ means just getting a line of text from STDIN.
One useful catch: If you ⍞← and then immediately get the value of ⍞, then the outputted value will acts as a prompt and the user can edit on that same line after the prompt. So, e.g. ⍞←'C:\>' ⋄ input←4↓⍞ will look to the user like he is typing on a DOS prompt.
You can use ⎕ and ⍞ to save you bytes in codegolf. Challenge: return ten minus the absolute value of the sum of a given list of numbers. dfn: {10-|+/⍵} (9 chars); train: 10-(|+/) (8 chars); tradfn: 10-|+/⎕ (7 chars).
@KritixiLithos ⊢ and ⊣ are absolutely essential in trains.
@KritixiLithos Btw, one internship for someone from PPCG has now been arranged for this summer, so the idea of internships for code golfers is definitely real. Keep up the good work!
@KritixiLithos In an expression, ⊣ and ⋄ are pretty much just mirrors of each other. Since execution is from the right, whatever is on the right of ⊣ is discarded in favor of what's on the left. This way, multiple statements can be strung together from right to left: D⊣C⊣B⊣A.
@KritixiLithos Yes. They form one large expression.
⋄ separates multiple expressions, just like a linebreak.
This is really useful with dfn guards :. dfns continue execution line-by-line, but if a guard is triggered (what's on the left of the : evaluates to 1), then the expression on the right side of the : is the final result. But how about if you want to execute multiple expressions? Chain them from right to left with ⊣.
E.g. If given more than ten numbers return just their sum and average. If not, return all the numbers and their squares.
@KritixiLithos If you want to type a tradfn into the APL session or a namespace, you need to begin and end with a ∇, but if you use ⎕FX to fix a character array, you don't need them.