@Ven Because The first operator with array right-operand was ⍤ and it needs between one and three scalars as right operand. So for convenience (but at the cost of general applicability), and because tacit APL had not been introduced yet, it was decided that the parsing should automagically chop the right hand array and give as much as needed to the operator while treating the remainder as right-argument.
The Chromium Embedded Framework (CEF) is an open source framework for embedding a web browser engine based on the Chromium core. It allows developers to add web browser control and implement an HTML5-based layout GUI in a desktop application or to provide web browser capabilities to a software application or game, and provides the infrastructure for developers to add HTML rendering and JavaScript to a C++ project. It also comes with bindings for C, C++, Delphi, Go, Java, .NET / Mono, and Python and runs on Linux, Mac OS X and Windows.
== Overview ==
There are two versions of Chromium Embe...
@Ven The cool thing is that you will very soon be able to make a MiSite app and then chose to run it as a web server or as a local cross-platform desktop app. You can already do that, but need to modify your code slightly. The idea is that no code changes would be necessary.
Adám is hosting an informal APL learning session tonight at 18:30 UTC in https://chat.stackexchange.com/rooms/52405/apl continuing the "APL primitive functions' marathon".
See https://chat.stackexchange.com/transcript/message/41299896… … if you don't have 20 Stack Exchange rep points.
@J.Sallé Sorry about that. Yeah, I did see it, but :-) I can hardly read/understand it. Does it pass the test cases? If so, then post and explain/ungolf it. Then maybe I will be able to do a sanity check.
@J.Sallé Ah, I see what you mean. You need to count the function header, as it is significant (not just "F"). Also the "calling" method is unusual. If you reverse the arguments of s, then you should be able to take k n as a single input. Finally, add a line to the Code which calls with the right format, e.g. (⍬⎕f nk)s nk←⎕
⍷ 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.
@Adám Hey, sorry for bothering so late :p When you have some time, could you give me some insight? I did what you suggested and the function f fails when I try (⍬⎕f nk)s nk←⎕ and input 15, then 2 4. It works if I do (⍬⎕f 2 4)s 2 4 with input 15 though. Debugger says it needs a boolean singleton on f[3], which is :While j<⊃⌽n.
@J.Sallé I am very impressed by your APL skills. You started learning from nothing, right? I still have no idea what your code does or how you managed to write it. Anyway, I golfed it a bit just by moving stuff around; it is still doing exactly the same: Try it online!