Необычная вещь OCaml

Может ли кто-нибудь объяснить это поведение OCaml?

# 1________________________________1;;
- : int = 11

(Большая строка - это последовательность символов подчеркивания: '_')

Из любопытства эта программа также компилируется под ocamlc.

Ответ 1

Подчеркивания допускаются в числах (и игнорируются) в OCaml. Из http://www.cs.ru.nl/~tews/htmlman-3.10/lex.html#xhtoc5:

Для удобства и удобочитаемости символы подчеркивания (_) принимаются (и игнорируются) в целых литералах.

Ответ 2

Это очень полезная функция, чтобы избежать ошибок и облегчить чтение больших целых чисел:

1_000_000_000 легче читать, чем 100000000 (вы заметили, что я забыл ноль?).

Ответ 3

Существует несколько языков программирования, которые принимают символ подчеркивания как несущественный символ в целочисленном значении. Ada, Perl, OCaml и, возможно, некоторые другие языки используют его для разделения тысяч, миллионов и миллиардов... но вы можете использовать _ в любом месте целого числа.