OCaml 属性
OCaml attributes
我正在查看手册,发现 OCaml 中有一些属性用于将事物声明为已弃用(参见 http://caml.inria.fr/pub/docs/manual-ocaml/extn.html),但我不知道如何让编译器识别它们。
这是我写的程序:
let x = 1 [@@ocaml.deprecated "don't use this"]
type t = X | Y [@@ocaml.deprecated "don't use this"]
let _ =
let y = Y in
match y with
| X ->
print_string (string_of_int x)
| Y -> assert false
(我也尝试了 [@@deprecated ...]
而不是 [@@ocaml.deprecated ...]
,结果相同)。我在 运行:
时没有收到任何警告
ocamlbuild src/trial.byte
我的 _tags
文件中是否需要设置某些内容?我还遗漏了什么吗?
似乎从 4.02.3 开始工作,对于此版本,#require "ppx_jane";;
在您的代码之前。在 4.03.0 中,它在本地工作。
已弃用的注释仅适用于值(不适用于类型),并且主要用于签名。在你的情况下,这里应该如何完成:
module M : sig
val x : int [@@deprecated "don't use this"]
type t =
| X [@deprecated "don't use this"]
| Y [@deprecated "don't use this"]
end = struct
let x = 1
type t = X | Y
end
open M
let _ =
let y = Y in
match y with
| X ->
print_string (string_of_int x)
| Y -> assert false
我正在查看手册,发现 OCaml 中有一些属性用于将事物声明为已弃用(参见 http://caml.inria.fr/pub/docs/manual-ocaml/extn.html),但我不知道如何让编译器识别它们。
这是我写的程序:
let x = 1 [@@ocaml.deprecated "don't use this"]
type t = X | Y [@@ocaml.deprecated "don't use this"]
let _ =
let y = Y in
match y with
| X ->
print_string (string_of_int x)
| Y -> assert false
(我也尝试了 [@@deprecated ...]
而不是 [@@ocaml.deprecated ...]
,结果相同)。我在 运行:
ocamlbuild src/trial.byte
我的 _tags
文件中是否需要设置某些内容?我还遗漏了什么吗?
似乎从 4.02.3 开始工作,对于此版本,#require "ppx_jane";;
在您的代码之前。在 4.03.0 中,它在本地工作。
已弃用的注释仅适用于值(不适用于类型),并且主要用于签名。在你的情况下,这里应该如何完成:
module M : sig
val x : int [@@deprecated "don't use this"]
type t =
| X [@deprecated "don't use this"]
| Y [@deprecated "don't use this"]
end = struct
let x = 1
type t = X | Y
end
open M
let _ =
let y = Y in
match y with
| X ->
print_string (string_of_int x)
| Y -> assert false