Clearly, there could be more features and it could be more efficient, but in terms of producing the simplest thing that works for me, I'm really happy with this:
https://gist.github.com/eraserhd/5435505
Usage:
(define-generic (length object))
(add-method (length (vector? v))
(vector-length s))
(add-method (length (string? s))
(string-length s))
(add-method (length (list? l))
(##length l))
(length "hello") => 5
(length '(1 2 3)) => 3
(length '#(a b)) => 2