作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在尝试使用 Batteries
与 ppx_deriving.show
或类似的东西。
我想知道如何有效地一起使用它们。
要创建转储函数,我觉得 ppx_deriving.show 很有用。
但是我在使用它们时遇到了一些麻烦,如下所示。
open Batteries
type t = { a: (int,int) Map.t }
[@@deriving show]
现在
Map.pp
未定义,因此无法编译。
module Map
其中包括
Batteries.Map
并定义函数
pp
.
open Batteries
module Map = struct
include Map
let pp f g fmt t = ... (* create dump function by man hand *)
end
type t = { a: (int,int) Map.t }
[@@deriving show]
它有效,但对我来说适应所有数据结构很痛苦......
Core
与
ppx_deriving.sexp
是另一种选择,但我更喜欢
Batteries
与
ppx_deriving.show
.
最佳答案
你的解决方法是正确的。如果您想对数据类型使用推导 M.t
未声明 [@@deriving]
,你必须给出它的方法如M.pp
对于 show
自己:
module M = struct
include M
let pp = ... (* code for pretty-printing M.t *)
end
module M = struct
include M
type t = M.t = ... (* the same type definition of M.t *)
[@@deriving show]
end
M.pp
对于类型
t
使用
deriving
.
ppx_import
,您可以避免复制和粘贴定义:
module M = struct
include M
type t = [%import: M.t]
[@@deriving show]
end
show
的
Map.t
但这并不是真的有用:通常你不想看到
Map.t
的二叉树表示。除非你在调试
Map
模块本身。
关于OCaml:如何一起使用电池和 ppx_deriving.*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42513872/
目前我正在尝试使用 Batteries与 ppx_deriving.show或类似的东西。 我想知道如何有效地一起使用它们。 要创建转储函数,我觉得 ppx_deriving.show 很有用。 但是
有人可以告诉我为什么这段代码没有编译。我正在尝试使用 ppx_deriving 库打印抽象语法树。 type prog = command list [@@deriving show] and com
我正在努力正确设置我的 OCaml 环境以使用 ppx 派生器映射、折叠和迭代,如下所示: https://github.com/ocaml-ppx/ppx_deriving#plugins-iter
我正在尝试使用 jbuilder连同ppx_deriving (特别是 ppx_deriving_yojson)但现在卡住了一个多小时。我目前的方法是 jbuild文件,包含以下内容: (jbuild
我是一名优秀的程序员,十分优秀!