views:

463

answers:

2

I've just finished reading a very interesting paper entitied "Out of the Tar Pit" which presents this idea of FRP as a way of reducing complexity in applications by minimizing state and control. Are there any examples of this idea out in the wild? Is anybody making use of these ideas? Is there any work being done in this area?

Edit: FRP is NOT just functional programming as some editors and commentators are suggesting, and its concepts could in fact be implemented in any declarative or even imperative language. The suggestion in the paper is actually different parts of the system to be implemented in different DSL-like languages, where each DSL is limited to only what is necessary.

Also, the link I had above didn't work when accessed directory from SO for some reason. As such, I've included it here for copy/paste:

http://web.mac.com/ben_moseley/frp/paper-v1_01.pdf

A: 

According to your link, the answer is "no" - look on page 42- and I'm guessing that this is still true after three years.

Looking at the way their concept is put together, it looks like it would really need a language and development system built around it, or possibly jury-rigged from an existing pure functional language. It seems like their concepts require a language oriented around specifications and architecture that then need heavy interpretation by a runtime system.

The closest match I can think of to this is linear/integer programming and optimization systems such as CPLEX, where you simply provide constraints on the data and some initial data and then the system tries to manipulate the data in ways that are consistent with the constraints in order to optimize the function you asked about. It lacks their fourth architectural component, the user interface component, and also requires heavy interpretation of a specific class of problems into the kinds of constraints that it is prepared to deal with.

jprete
+1  A: 

XQuery with XQuery Update fits many of these criteria. XQuery is a fully functional language with no side-effects - all input sources, even current-time, are "frozen" for the duration of the query.

The update set is applied atomically.

Instead of objects, though, it uses the XML data model, and does not as yet support polymorphism.

There are entire ACID XQuery databases, such as from MarkLogic. Some major RDBMS vendors include XQuery support inside of their relational databases such as in DB2, Oracle and [SQL Server]. And DataDirect XQuery layers XQuery w/Update on many databases that may not even natively support XQuery.

There are GUI code generators for XQuery. Stylus Studio has an XQuery mapper that lets you edit the map and watch the code change, or edit the code and watch the map change. Other tools such as Altova MapForce unidirectionally generate XQuery and integrate with databases.

lavinio