использование пакета uint с OCaml — opam

Я только что установил opam и установил пакет uint. Однако, когда я пытаюсь сделать что-то подобное

File : Hello.ml
let ash(mystring) = (
    let basis =   uint64.of_string("0xcbf29ce484221325") in
    Printf.printf "Function Finished" ;
);;

ash("Hello");;

я получаю ошибку

Error: Unbound value uint64

Любые предложения о том, что я мог пропустить? Я новичок в OCaml и opam

Я использовал следующий оператор для компиляции кода в моем терминале OSX.

ocaml Hello.ml 

person James Franco    schedule 20.09.2015    source источник
comment
Это на верхнем уровне, скомпилировано ли, какие флаги вы использовали, как вы это скомпилировали? Вы должны дать нам больше, чем просто это не работает.   -  person Edgar Aroutiounian    schedule 20.09.2015
comment
Я добавлю сюда весь свой код. Извините, я не был в курсе этих подробностей   -  person James Franco    schedule 20.09.2015
comment
Вы забыли написать uint64 с большой буквы в Uint64.of_string. Модули всегда пишутся с большой буквы.   -  person Anthony Scemama    schedule 21.09.2015


Ответы (1)


Несколько проблем, вам не нужны () вокруг аргументов, если вы не хотите, чтобы они были кортежем значений (возможно, тема, которую вы изучите позже в будущем)

Обычный ocaml похож на интерпретатор, он не знает, где находится установленный код (возможно, вы привыкли любить python, где у интерпретатора есть несколько мест, которые он сначала ищет сам)

let ash mystring =
  let basis = Uint64.of_string "0xcbf29ce484221325" in
  Printf.printf "Function Finished"

let () =
  ash "Hello"

Предполагая, что он называется hello.ml, вы можете скомпилировать его с помощью

ocamlfind ocamlc -package uint -linkpkg hello.ml -o Test

(Это использует оболочку ocamfind, и она вызывает ocamlc для вас и говорит ему использовать пакет uint и связать его с окончательным исполняемым файлом с именем Test)

а затем запустите его с

./Test
person Edgar Aroutiounian    schedule 20.09.2015
comment
@ДжеймсФранко opam install ocamlfind - person Edgar Aroutiounian; 20.09.2015
comment
Пишет.` [ПРИМЕЧАНИЕ] Пакет ocamlfind уже установлен (текущая версия 1.5.5)`. Я немного смущен тем, почему он не может найти его. Нужно ли мне устанавливать его в переменных среды? - person James Franco; 20.09.2015
comment
Откройте новую оболочку/терминал, выполните eval `opam config env` Затем проверьте наличие ocamlfind, which ocamlfind - person Edgar Aroutiounian; 20.09.2015
comment
Спасибо, это помогло - похоже, мне нужно было сделать eval `opam config env` - person James Franco; 20.09.2015
comment
@JamesFranco Нет проблем, если вам интересно позже, вы можете прочитать этот ответ, который немного углубляется в набор инструментов OCaml, stackoverflow.com/questions/30543465/ - person Edgar Aroutiounian; 20.09.2015