Status/Requires testing
1752850: Job splitting
Status/Active
1751200: Date and time handling
Status/Closed
1751294: Navigation
Status/Closed
1751127: Access to sourcesafe2subversion
Status/Active
1751308: Team Lambdal Tap's public page?
1751225: About the team -- please introduce yourself here
Status/Closed
1751221: Team and tag names
Status/Closed
1750871: Ugly site
Status/Closed
1751186: Search broken
Status/New requirement
1750985: Project menu order and sub-projects
Status/Closed
1750879: Searching for an empty string is broken

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.

Pages