i've taken an interest in the recent developments around the

zipper construction. Like every other developer on the planet i've long noticed that there is a close relationship between paths into locations in a data structure and URLs in a CRUD application that is essentially backed by such a data structure. Recently, i've noticed that efforts like

merb routes and

Jersey/JAX-RS are groping toward a similar notion in an effort to simplify and semi-automate RESTful design. i submit that the zipper/context calculation pretty much completely captures this relation.

Here's a link to a discussion of how to calculate zipper for any (regular) data type. Moreover, it seems to me, the relationally-definable types (i.e. the ones that end up with natural mappings to a type defined in a relational schema) are entirely included in the types susceptible to the zipper calculation.

To be clear, i'm suggesting that given a type, T, you can use zipper to auto-calculate

- Context data, C[T], that will serve as the type of paths into T.

- These paths have a natural interpretation as URLs to locations in an inhabitant (aka instance) of T.
- The type+focus combination gives a natural place to hang the CRUD operations.

Note that with a context type you can validate URLs on the client side; i.e., you can eliminate with a client-side check many cases where you would otherwise be forced to serve up a 404.

Finally, there is a natural extension of this framework to more generally distributed data. As usual, it appears that Oleg got to the observation before i did, and this seems to be the basis of his

ZFS file system.

## No comments:

Post a Comment