Ocaml # загрузить без верхнего уровня? - PullRequest
0 голосов
/ 18 октября 2018

У меня проблема с ocaml, я новичок в ocaml.Я хочу использовать #load ".... мл".Затем откройте «.... ml».

Когда я использую emacs, это нормально, но в настоящее время я использую linux xfce с компилятором ocaml, и когда я пытаюсь использовать #load и open, у меня возникает синтаксическая ошибка.

Я уже посмотрел в Интернете, если мне не нужно было использовать '#' перед загрузкой, но у меня также есть синтаксическая ошибка.

Пример моего кода, который работает с Emacs:

#load "list_ap1.cmo"
open List_ap1;;

А есть что это в liste_ap1.cmo

module List_ap1 =
  struct
    let len(l) = List.length l;;

let fst(l) =
  match l with
    [] -> failwith "error empty list"
  | hd::tail -> hd
;;

Может кто-нибудь мне помочь?Хорошего дня

1 Ответ

0 голосов
/ 18 октября 2018

Как упомянуто в toplevel , #load предназначено для загрузки файла байт-кода, что означает, что вы уже скомпилировали исходный код ocaml в байт-код, используя ocamlc, и в этом случае вы загрузитефайл с расширением .cmo или .cma.Начальный # означает, что это команда, предназначенная для среды верхнего уровня, и это не ключевое слово ocaml.

open - это ключевое слово для открытия модуля ocaml (см. modules ) предназначен для структурирования кода ocaml.

Чтобы запустить среду верхнего уровня ocaml, а не компилятор, просто запустите: ocaml, вы сможете вызвать #load.После загрузки List_ap1 вы можете использовать его функцию, написав полный путь: List_ap1.len.Или, если вы open этот модуль, вы непосредственно называете функцию без имени модуля в качестве префикса.

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