5

我刚刚开始在我的自定义类型上使用with sexp语法扩展(在此处此处描述)。但是,我注意到,当我这样做时,我会收到以下关于我的类型的警告:

Warning 4: this pattern-matching is fragile. It will remain exhaustive when constructors are added to type Sexplib.Type.t.

假设这是因为with sexp语法生成的 sexp 转换器仅处理为 Sexp (Sexp.ListSexp.Atom) 定义的类型构造函数。

我通常会尝试修复编译中的任何警告;有没有办法让编译器在这里开心(没有让它在所有情况下都完全抑制警告)?

编辑:用于降价格式。

更新:提供来自hit.ml.

open Core.Std
open Option.Monad_infix

open Battey.Kernel

type hit = (sentence * int) with sexp

生成此警告:

File "hit.ml", line 6, characters 5-27: Warning 4: this pattern-matching is fragile. It will remain exhaustive when constructors are added to type Sexplib.Type.t.

其他信息:我在opammacbook(优胜美地)上使用 ocamlc 的 4.02.3 版本(通过 安装),并且正在使用 113.00.00corecore_kernel. 我也-w A用于我的 cflags。

对更新延迟表示歉意;假期让我远离我的笔记本电脑/互联网连接。

感谢您的反馈!

4

1 回答 1

0

我相信这是由使用类似的东西引起的

match t with
| A -> 0
| B -> 1
| _ -> 2

如果type t = A | B | C. 但是当稍后添加构造函数 D 时, _ 只会匹配它,通常这不是你想要的。看起来您无能为力,但可以忽略警告。

于 2017-03-30T11:34:56.013 回答