I have talked about my views on functional programming and, specifically, the functional features in Prova to a number of people during the last year and it may be a good moment to share some ideas and directions. You may know my interests in systems that observe event streams and derive actionable information from raw data. Why am I not so excited about finite data and algebraic approaches offered by functional languages?
Now that Prova is firmly migrated to GitHub https://github.com/prova/prova, it is time to reboot this blog. These are the release notes for a newly released Prova 3.1.8.
Release Notes - Prova Rule Language - Version prova-3.1.8
Bug
Improvement
Catching up on the versions that have been released this fall and early winter. The following collects the release notes for all the versions released in this time period. Note that release 3.1.2 was skipped.
The Eclipse plugin available from the update site http://www.prova.ws/eclipse has been updated to include:
An Eclipse plugin for Prova is now available at the Eclipse update site: http://www.prova.ws/eclipse, use this link only from Eclipse Install New Software, not from the browser. The plugin is based on the latest version of the excellent Xtext framework. We have attempted to include the necessary plugin dependencies but if your Eclipse update cannot find some dependencies, drop us a line or scout for the dependencies--installing Eclipse Xtext should be enough in all cases.
The newest update 3.0.4 is out and will be the the last one before 3.1.0 where the main updates will be to the User's Guide. See http://www.prova.ws/jira for issues resolved in the release.
Version 3.0.4 adds a proper syntax for specifying function definitions and calls. The syntax improves readability and ease of authoring rules with functions. However, behind the scene, the functions ultimately remain predicates with two arguments: one for input parameters and one for output.
Consider the following function that matches the n-th element of a list.
nth 1 [X] : X = !.
I have been mainly focusing lately on actually using Prova rather than updating the main codebase. I have been accumulating a number of examples, in particular, demonstrating the functional programming extensions and event processing. The examples have now made it into the package release and especially, the source code in Subversion. There is a bug fix as well as reported in Prova JIRA.
Prova Workflows is a set of examples that utilize Mule ESB to run a set of collaborating agents (workflows). The agents use Prova 3.0.1 as well as (albeit in a very simple way) Drools 5.0.1. Partial solution to the Flower Delivery problem from Opher Etzion and Peter Niblett's book on Event Processing is also included. The examples showcase sophisticated workflow patterns including, for example, Milestone, Structured Distriminator, Deferred Choice and Cancel Activity.
Prova version 3.0.1 has been released. Prova JIRA (http://www.prova.ws/jira) contains full details on the fixed issues and improvements. The binary artifacts are available from http://www.prova.ws/downloads and the Maven 2 artifact is in http://www.prova.ws/maven2. The source code is tagged and is available from the usual location linked from http://www.prova.ws/downloads. The OSGi manifest is now updated to version 3.0.1.
Prova 3.0 has now been released. The concepts that have gone into it are the result of extensive discussions with a lot of people. I want to particularly acknowledge help from Adrian Paschke, Bart Viaene, and David Jeffery.
This release has an extensive and up-to-date documentation available at http://www.prova.ws/etc/Prova 3.0 User Guide.pdf. If you prefer to read Confluence WIKI, it is as usual at http://www.prova.ws/confluence.