在OCaml中,您可以嵌套签名:
module type FOO =
sig
module type BAR
(* … *)
end
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有人在使用中有任何这样的例子,因为我想不出任何需要它的地方.我想它在函子的返回签名中可能很有用,但我想不出任何具体的东西.
我记得看到一些模块(可能是电池),其中包括一个Infix可以单独打开的模块,只有在真正需要的时候.例如,
module Rational =
struct
let add a b = ...
let sub a b = ...
module Infix =
struct
let (<+>) = add
let (<->) = sub
end
end
Run Code Online (Sandbox Code Playgroud)
这样,如果你打开Rational.Infix模块,就不会去除(?)任何与其中任何名称相同的函数Rational.
我正在开发一个项目,我们使用模块进行划分types.让模块只定义一种类型并操纵该类型有助于组织; 特别是当模块很小并且具有单独的文件时不会有利,并且变体类型没有意义.
module Node =
struct
end
module Edge =
struct
end
type 'a tree = { nodes : 'a Node.t; edges : 'a Edge.t; }
Run Code Online (Sandbox Code Playgroud)
我们也使用它们,虽然作为单独的文件(与-mlpack结合),我们需要生物数据的所有解析器--Nexus,Fasta,Phylip等等.
最后,通常在为新算法进行原型设计时,我们将首先在ocaml中编写它,然后处理C版本.我们通常将ocaml版本保留在具有相同函数名称的内部模块中.
module Align =
struct
module OCaml =
struct
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |