(defn v-rat
[uv dv]
(/ (expt uv 3/2)
(+ uv dv))))
(define nest-weight
[comment]
(/ 1 (+ (nest-level comment)
(/ 3 (nest-level comment)))))
weight::
(+ (/ ak 2)
(v-rat uv dv)
(reduce + (map (fn [c] (* (nest-weight c)
(v-rat (upvotes c) (downvotes c))))
(remove (fn [c] (= user (user c)))
comments))
Where ak is the average karma of the user (only on comments, if possible), uv and dv are upvotes and downvotes respectively, and comments is a list of comments in reply to the comment we're weighing.
There are sometimes things you might not like hidden in the releases you're signing, beyond the run of the mill acceptance of financial responsibility / assignment of benefits, notice of privacy policy acknowledgment, consent to treat.