archives

Embedded Domain-Specific Editors

A REPL can act as an end-user interface provided the language (or a DSL embedded therein) provides adequate support for the target domain.

For example, GHCi can be used as a simple calculator, and for this simple use-case a user needn't be familiar with intricacies of Haskell's type system. However, if necessary, a user can incrementally learn language features beyond that of a calculator, and code can be edited incrementally to utilize these advanced features with relative ease.

Are there any papers on visual languages or paradigms that attempt to bring this idea to GUIs? Specifically, I'm looking for a visual language which supports the creation of rich embedded domain-specific GUIs that, on the surface, behave like traditional GUIs but support powerful and incremental means of abstraction. Many, if not most, GUI applications could arguably benefit from some mechanism of abstraction, but textual interfaces are insufficient for a wide class of problems.

Testing release of a platform for hosting pure functional web applications

I'd like to announce the public debut of a service I've been working on. Among other things, it provides "cloud hosting" for web applications written in Ur/Web, a domain-specific functional language for "Web 2.0 programming."

http://www.graftid.com/

This service (called Graftid) also enables communities of developers to work together to build tools that non-programmers can use to build customized web sites quickly. Anyone can upload a site-generator GUI, which is implemented in Ur/Web and also generates Ur/Web code, based on what a user enters into the GUI. Everything is statically-typed, and it's possible to use combinators to minimize the cost of building a new GUI. Every GUI inherits a platform for automatic deployment of applications, without the need to write a line of code that has a server-side side effect.

I'm looking for curious folks who might like to put this platform through its paces, finding bugs, security-oriented and otherwise. I hope that many LtU readers will find this a very pleasant platform for building buzzword-compliant web apps, without the need to learn much about the buzzwords and their associated technologies. :)

I also have a related question that I thought I'd include with this post: We're all used to encapsulation for examples like data structures: a class or module "owns" a representation, and the representation may only be accessed by going through the class or module's published interface. Ur/Web extends this facility to let you code a module that owns a cookie, a database table, a subtree of the client-side DOM for a particular page rendering, etc.. Think "Facebook apps" with static enforcement of which app may touch which resource, but without the need for any dynamic enforcement, and with the possibility for running all the apps on the same server; we just combine first-class web app pieces with standard encapsulation techniques. Does anyone know of any other systems that allow this? Has the desirability of this facility been articulated somewhere?