⍷ is "Find". It returns a Boolean array of the right argument's shape with a 1 at the "top left" corner of occurrences of the left argument in the right argument:
@EriktheOutgolfer I probably typed something wrong (like a nbsp instead of a space).
So, anyway, you can see that it preserves duplicates from the left argument, while only adding the items from the right necessary to make the result contain all elements from both.
It will add duplicate elements from the right if they are not in the left, though:
So it removes elements from the left which are not in the right. Duplicates in the right do not matter.
The last multi-set function is dyadic ~ which is "without" or "except". It simply removes from the left whatever is on the right. Note that it can take even high-rank right arguments.
Next up is /. You may think we covered it in lesson 3 but that was as an operator, e.g. +/ for sum. When what's on its left is an array rather than a function it instead acts like a function. (This does make it unusual.)
/ as a function is called replicate. It replicates each element on the right to as many copies as indicated by the corresponding element on the left:
It has one more trick: If you use a negative number, then it replaces the corresponding element with that many prototypes (spaces for characters and zeros for numbers).
Just like the operators / and \ each have a sibling, ⌿ and ⍀ which do the same thing but along the first axis (i.e. on the major cells) so to with the functions / and \ :
Monadic ⍪ is called "Table" as it ensures that the result is a table. It ravels the major cells of an array and makes each one of them into a row (i.e. a major cell) of a matrix:
This is, monadic ⍪ is just a synonym for ,⍤¯1 (except for scalars).
And this concludes today's lesson. See you all next week for the year's last lesson, where will hopefully be able to go through the remaining six functions.