



Urquell
Urquell is a functional programming language where programs are written as URLs.
The language as it is right now is:
- Sort of pure and sort of referentially transparent
- Has partial application and higher order functions
- Has no syntax
- Should be Turing complete (assuming the combinators are properly implemented)
We also have a Google Wave robot to help you write Urquell programs.
What do Urquell programs look like
Here is a simple “Hello world” program:
http://urquell-fn.appspot.com/lib/echo/hello/world
This program returns a JSON blob with the results of the argument invocation held at the value field. The other fields are used for debugging and composing function calls.
{
"path":"\/lib\/echo\/hello\/world",
"args":[ "hello","world" ],
"hash":"=Lo7V1M",
"name":"\/lib\/echo",
"value":{"keywords":{},"arguments":[ "hello","world" ]}
}The Urquell function http://urquell-fn.appspot.com/lib/echo simply returns its arguments back to the caller.
If you look at the URL using a web browser you will see a HTML page that describes the function, shows you the result and also gives you what we call a binding hash. This allows you to create Urquell programs by combining sub-expressions into larger expressions.
If you make the same request using any of the popular AJAX frameworks you will instead receive the JSON directly. Urquell uses the X-Requested-With header to determine what to serve. If it finds the string XMLHttpRequest anywhere in the header value it will return JSON rather than HTML.


