Условная компиляция в OCaml - PullRequest
       8

Условная компиляция в OCaml

5 голосов
/ 01 сентября 2010

предположим, у меня есть длинный алгоритм, который я хотел бы опционально использовать для его отладки. Пока что я просто добавил множество if verbose then printf "whatever" по всему коду, но это заставляет код выполнять много бесполезных тестов, если я не хочу, чтобы он был в подробном режиме.

Есть ли способ получить простую условную компиляцию, которая может просто игнорировать строки printf, если установлен флаг?

То, что, например, я могу сделать в C, используя #IFDEF DEBUG printf .. #ENDIF

1 Ответ

7 голосов
/ 01 сентября 2010

То, что вы ищете, можно найти в camlp4 . Если вы включите предопределенные макросы, то вы можете определить флаги в командной строке, используя -D (и -U для их отмены):

camlp4o pa_macro.cmo -DFOO file.ml

В коде это выглядит так:

let f x = IFDEF FOO THEN x + 1 ELSE x - 1 END;;
...