Прежде всего, отказ от ответственности. Camlp4 устарела, поэтому я очень не рекомендую использовать его в любом новом проекте. Подумайте об использовании ppx, или если вам действительно нужно то, что ppx не может предоставить вам, то camlp5 все еще к вашим услугам.
Чтобы создать программу, написанную с нестандартным синтаксисом OCaml, вынужно явно указать ocamlfind
какой синтаксис вы используете, например, -syntax camlp4o
. Это аналогично директиве #camlp4o
утилиты topfind
, которую вы использовали.
Далее вам не нужно ничего открывать (оператор open
в OCaml просто расширяет текущее пространство именс определениями из открытого модуля). Не существует такого модуля, как Camlp4.ListComprehensions
, поэтому правильная версия вашей программы
let _ = [ x * y | x <- [ 1;2;3;4;5]; y <- [10;11;12;13;14 ] ]
, а вот команда сборки
ocamlfind ocamlopt -syntax camlp4o -package camlp4.listcomprehension -linkpkg lc1.ml -o lc1