An attribute could accept a custom comparator and validator (as installed functions) and any fressian/edn-compatible value. We often have a complex type which datomic either forces us to serialize to a string (slow, hacky, space-inefficient), or encode into a long (hacky, tricky), or use a full entity (lost value semantics, need to declare more attributes). Custom value types would solve all this.