I’ve been working on the Frank syntax lately. Following some help from @talljoe, Frank maps paths from a resource level rather than each HTTP method. Frank can then take advantage of combinators that add HEAD and OPTIONS based on the HTTP methods explicitly supported by the developer … something missing from most web frameworks, the notable exception being OpenRasta.
Below are samples of two approaches: function and resource. Both are quite noisy at the moment, but I plan to continue reducing the footprint.