add uncons unsnoc empty? primitives