Реализация Ocaml - PullRequest
       6

Реализация Ocaml

7 голосов
/ 27 марта 2011

У меня возникла небольшая проблема с реализацией массивов в ocaml. Например, когда на терминале (консоле) и я набираю

let tab = Array.make 5 6;

У меня есть

val tab : int array = [|6; 6; 6; 6; 6|]

в качестве выхода. Таким образом, он создает массив длиной 5 и заполняет все случаи 6. Хорошо, я понимаю эту часть. Но когда я набираю его в текстовом редакторе, например, в kate, сохраняю и компилирую, я получаю эту ошибку:

Error: Unbound value Array.make

Я не понимаю, почему это занимает Array. make как значение в kate, и оно принимает Array.make как функцию в терминале. Я сохранил файл с расширением «.ml» и скомпилировал его, используя ocamlc -o test name_of_file. Любые предложения, пожалуйста? Спасибо.

Ответы [ 2 ]

5 голосов
/ 27 марта 2011

Я скомпилировал вашу программу с ocamlc, и все прошло нормально (с использованием OCaml 3.12.0).

Я думаю, вы вызываете старую версию компилятора, когда пытаетесь скомпилировать, возможно, однус того момента, когда Array.make все еще называлось Array.create.Возможно, когда вы установили новую версию, вы перезаписали некоторые файлы (например, верхний уровень), но не другие (например, компилятор).Чтобы проверить, сравните версии, заданные ocamlc -v и ocaml.

Что касается сообщения «Несвязанное значение», в OCaml функции являются значениями.Разработчики не делали различий между «несвязанным значением, которое не является функцией» и «несвязанным значением, которое является функцией», но это не является причиной проблемы.Причина вашей проблемы в том, что Array.make вообще не связан.

3 голосов
/ 09 апреля 2011

Я нашел ошибку. Это очень глупо. Я сохранил свой файл как «array.ml». Поэтому во время компиляции он создал файл array.cmi, и я думаю, что он как-то перепутал этот файл с файлом, найденным в ... / lib / ocaml / array.cmi. Я не совсем уверен. Поэтому я переименовал файл в «table.ml», и он отлично скомпилирован. Сумасшедший, что он перепутал эти два файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...