"sort" function incorrect sorting russian words with ё letter
10:56 13 Feb 2026

There are 33 letters in the Russian alphabet. I made a list of 33 words in random order. Then I try to sort it:

(deffunction string> (?a ?b)
    (> (str-compare ?a ?b) 0)
)

(defrule main =>
    (bind ?list (create$ гора цапля дом еда ёжик игра соль йод кошка лось мост ворона номер арбуз опера пульс радуга тополь урок флот ходули шуба банан щука ь чаша ы ъ экран юрта зима якорь жизнь))
    
    (printout t "original list: " ?list  crlf)
    (bind ?list (sort string> ?list))
    (printout t "sorted list: " ?list  crlf)
)

(reset)
(run)
(exit)

After sorting, I get an incorrect result:

~/dst/clips/clips_core_source/clips_core_source_642/clips_642 -f2 sort-small.bat 

original list: (гора цапля дом еда ёжик игра соль йод кошка лось мост ворона номер арбуз опера пульс радуга тополь урок флот ходули шуба банан щука ь чаша ы ъ экран юрта зима якорь жизнь)

sorted list: (арбуз банан ворона гора дом еда жизнь зима игра йод кошка лось мост номер опера пульс радуга соль тополь урок флот ходули цапля чаша шуба щука ъ ы ь экран юрта якорь ёжик)

Sorted list should look like this:

sorted list: (арбуз банан ворона гора дом еда ёжик жизнь зима игра йод кошка лось мост номер опера пульс радуга соль тополь урок флот ходули цапля чаша шуба щука ъ ы ь экран юрта якорь)
;                                             ^^^^

Because the letter ё is the seventh letter in the Russian alphabet, not the last.

How can I sort with the correct order?

sorting clips