В Ocaml, при сравнении строк (которые содержат числа), как оцениваются логические значения? - PullRequest
0 голосов
/ 19 марта 2019

Сравнение строк "3" <= "4" ;; оценивается как "bool = true" Здесь 3 меньше 4, так что это имеет смысл. </p>

Это сравнение строк "3" <= "9" ;; оценивается как "bool = true" 3 меньше 9, так что это имеет смысл. </p>

Почему тогда сравнение строк "3" <= "10" ;; оценить "bool = false"? Связано ли это с длиной строк или, возможно, их значениями ASCII? </p>

Спасибо за ваше время.

1 Ответ

8 голосов
/ 19 марта 2019

Это нормальный лексикографический порядок .

"3" > "10" по той же причине, что и "d" > "ba".

Первый символ строки A сравнивается с первымсимвол строки B. Если они разные, все готово.

Если они одинаковые, то второй символ строки A сравнивается со вторым символом строки B. Если онипо-другому, все готово.

Если они одинаковые, то третий символ ...

Это продолжается до тех пор, пока в обеих строках не закончатся символы одновременно (тогда ониравны) или одна из строк заканчивается первой (эта строка «меньше» другой).

...