• Mattias Engdegård's avatar
    Add `value<` (bug#69709) · 1232ab31
    Mattias Engdegård authored
    It's a general-purpose polymorphic ordering function, like `<` but
    for any two values of the same type.
    
    * src/data.c (syms_of_data): Add the `type-mismatch` error.
    (bits_word_to_host_endian): Move...
    * src/lisp.h (bits_word_to_host_endian): ...here, and declare inline.
    * src/fns.c (Fstring_lessp): Extract the bulk of this function to...
    (string_cmp): ...this 3-way comparison function, for use elsewhere.
    (bool_vector_cmp, value_cmp, Fvaluelt): New.
    * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns, pure-fns):
    Add `value<`, which is pure and side-effect-free.
    * test/src/fns-tests.el (fns-value<-ordered, fns-value<-unordered)
    (fns-value<-type-mismatch, fns-value<-symbol-with-pos)
    (fns-value<-circle, ert-deftest fns-value<-bool-vector): New tests.
    * doc/lispref/sequences.texi (Sequence Functions):
    * doc/lispref/numbers.texi (Comparison of Numbers):
    * doc/lispref/strings.texi (Text Comparison):
    Document the new value< function.
    * etc/NEWS: Announce.
    1232ab31