docs for the Pervasives.compare
function утверждают, чтоМожет ли сравнивать возврат ничего, кроме -1, 0 и 1?
compare x y
возвращает0
, еслиx
равноy
, отрицательное целое число, еслиx
меньшеy
, и положительное целое число, еслиx
больше, чемy
.
Это говорит о том, что может возвращать любое отрицательное или положительное целое число, а не только -1
или 1
, чтобы представлять greater- или меньшую-ность. Однако действительно ли это происходит?
Это сделало бы написание кода, как
match String.compare key new_key with
| 1 -> Node (left, insert new_key right, key)
| -1 -> Node (insert new_key left, right, key)
| _ -> Node (left, right, key)
гораздо сложнее (с использованием when
, наверное?).
Меня особенно интересует String.compare
. Взглянув на its implementation, он просто переходит на Pervasives.compare
, который, в свою очередь, реализован изначально с использованием external
. Не знаю, что он делает.
Я только начал изучать OCaml тоже. Это здорово видеть, что вы публикуете этот тег^_^ – naomik