Functional powers should be relatively easy to implement. We are not there yet, but there's already a task to allow for that.

Regarding performance issues and caching - that will be the fun part, and I figure that's where different evaluation engines will compete with each other. And where a lot of development can be sunk into. That'll be veeeery interesting! :D

On Thu, Jul 22, 2021 at 3:34 PM Thad Guidry <thadguidry@gmail.com> wrote:
Really nice to see this coming together Denny!
I especially liked the 2nd implementation of Xor ;-)
Function composition for the win!

Will functional powers be a slight problem, I mean stacking against performance issues with lookups?  Do you envision in-memory caching on an instance helping with that eventually?
For example, f∘3(x) meaning f(f(f(x)))



On Thu, Jul 22, 2021 at 4:49 PM Denny Vrandečić <dvrandecic@wikimedia.org> wrote:
The on-wiki version of this update is here:

----

In the last few weeks, the Wikifunctions prototype has passed a few critical milestones. We have massively improved the testability of our codebase and increased the robustness of our tests. There’s still plenty to do, but, considering the development ahead, it is reassuring to see the code becoming more robust.

Another step is that the first parts of evaluating function composition are now working. We can neatly compose  any combination of built-ins, code-based implementations, and other compositions.

I found myself having quite a bit of fun working with the prototype. Last week, in order to capture some of the possibilities, I made a video where I set up a new Wikilambda instance and defined a few functions for Boolean algebra. Booleans are one of the types that come pre-loaded with a Wikilambda instance. The main reason why they come as a pre-loaded type is because they are necessary for the builtin If function, and the If function is extremely useful.

In the demonstration video, I defined the Negate function, which takes one of the two  Boolean values (i.e. either True or False) and returns the other. Then I implemented the Negate function using the If function: If true then false else true. I followed this by implementing a few other Boolean functions with two parameters, such as the And function (conjunction), the Or function (disjunction), the Nand function, and the Exclusive or function. Some of the functions are implemented using solely the built-in If function; others combine previously composed functions together (such as Nand, implemented as Not And).

The video also shows how to call these newly-created functions and see that they work. You will notice a number of bugs in the video. Most of them are already filed and being worked on; some of them have even been solved already. A number of the workflows that you see have already been improved, such as creating an implementation directly from a newly defined function, etc. Also, please remember that the UX is still intentionally rough, and we will give it a complete overhaul before we launch.

The video runs for 24 minutes and is available on Commons:
 https://commons.wikimedia.org/wiki/File:Boolean_Algebra_with_very_early_Wikilambda.webm

Thanks so much to the team for getting the prototype so far! I am very proud, and looking forward to what comes next.

----

We are hiring! We are looking for an Engineering Manager: https://boards.greenhouse.io/wikimedia/jobs/3270135 Our hires can be based remotely.

The next opportunity to meet us and ask us questions will be at Wikimania. On 14 August, at 17:00 UTC, we will host a 1.5 hour session on Wikifunctions and Abstract Wikipedia. This year, Wikimania will be an entirely virtual event and registration is free. Bring your questions and discussions to Wikimania 2021: https://www.eventbrite.com/e/wikimania-2021-tickets-161884957265

And a reminder that all Wikimedians are invited to attend the Grammatical Framework Summer School from 26 July to 6 August 2021 for free. The link explains how to register and gives more background: https://meta.wikimedia.org/wiki/Special:MyLanguage/Abstract_Wikipedia/Updates/2021-06-24 
_______________________________________________
Abstract-Wikipedia mailing list -- abstract-wikipedia@lists.wikimedia.org
List information: https://lists.wikimedia.org/postorius/lists/abstract-wikipedia.lists.wikimedia.org/
_______________________________________________
Abstract-Wikipedia mailing list -- abstract-wikipedia@lists.wikimedia.org
List information: https://lists.wikimedia.org/postorius/lists/abstract-wikipedia.lists.wikimedia.org/