小编Jis*_*yun的帖子

如何在OCaml中使用模块定义类型的值?

TL;DR - 在 OCaml 中,如何调用该类型的外观type 'elt set = (module BatSet.S with type elt = 'elt)以及如何创建该类型的值?

目前,我正在阅读 Tezos 协议 [*] 中的代码,我看到了以下代码。

module type Boxed_set = sig
  type elt
  val elt_ty : elt comparable_ty
  module OPS : S.SET with type elt = elt
  val boxed : OPS.t
  val size : int
end

type 'elt set = (module Boxed_set with type elt = 'elt)
Run Code Online (Sandbox Code Playgroud)

我从未听说过像type a = (module B). 于是我打开一个顶级OCaml的解释和使用模块复制类似的使用电池。以下代码是我复制的日志。

$ ocaml
        OCaml version 4.07.1

# #use …
Run Code Online (Sandbox Code Playgroud)

ocaml types module

1
推荐指数
1
解决办法
149
查看次数

为什么OCaml类型转换函数以“A_of_B”形式命名?

像“A_of_B”这样的名字是 OCaml 中唯一的命名约定,但我想知道为什么。这是法语和英语语言使用不同的结果吗?还是 Xavier Leroy 的个人喜好?

背景:我发现 OCaml 的类型转换函数的名称类似于A_of_B,例如,int_of_string : string -> intfloat_of_int : int -> float在 Stdlib 模块中。其他流行的语言使用类似的名称AtoB,例如,itoaC 中的函数。

ocaml naming

0
推荐指数
2
解决办法
195
查看次数

标签 统计

ocaml ×2

module ×1

naming ×1

types ×1