I also like (and use) dispatch on values, using the Val{:symbol} construction, but when I can I always hide it from the "user" even (when important for performance). Personally, I think chol(A, Val{:L}) is ugly and also confusing for novices.
I am wondering: Why is it necessary to use dispatch? Or, even if there is a good reason, it would make a lot of sense (to me at least) to have an alias LinAlg.chol(a::AbstractMatrix, uplo::Symbol) = LinAlg.chol(a, Val{uplo}) with the old syntax? Thanks, Christoph