我是ocaml的新手,我在ocaml doc中找到了这种类型的def:https: //ocaml.janestreet.com/ocaml-core/111.28.00/doc/async_extra/#Tcp.Where_to_listen.t
type ('address, 'listening_on) t
type inet = (Import.Socket.Address.Inet.t, int) t
Run Code Online (Sandbox Code Playgroud)
我还没有在"真实世界ocaml"和其他地方看过这个语法,那是一个方便的语法
type inet = {
address:Import.Socket.Address.Inet.t,
listening_on:int)} ?
Run Code Online (Sandbox Code Playgroud)
你能教我哪本书或文档涵盖语法吗?我想学习它的细节,谢谢!
这是一个带有几个类型参数的参数类型(就语法而言,它就是typexpr ::= ( typexpr { , typexpr } ) typeconstr
这里的生产).
例如'a list
,其元素具有类型的列表类型'a
.这意味着它list
是具有一个参数(元素类型)的参数类型.
这种类型可能有几个参数.例如,如果要使用对列表构建键和值的字典,可以使用a ('a * 'b) list
(元素为对的列表 - 每对具有'a
第一个组件和'b
第一个组件).例如,[(3, true); (2, false)] : (int * bool) list
.
如果你想给这个类型命名,它有2个参数:'a
和'b
.定义的语法是:
type ('a, 'b) dict = ('a * 'b) list
Run Code Online (Sandbox Code Playgroud)
对于普通函数参数,您可以使用您喜欢的名称:
type ('key, 'value) dict = ('key * 'value) list
Run Code Online (Sandbox Code Playgroud)
然后你可以在代码中使用这种类型,比如[(3, true); (2, false)] : (int, bool) dict
.