It turns out that SXHASH produces the same results for permutations of a single list. The algorithm: result <-- (rotate[sxhash[car],-1])+(sxhash[cdr]) To be unique under permuations it probably should be: result <-- (sxhash[car])+(rotate[sxhash[cdr],-1]) So?