Functional programming 如何使用映射/定义在OCaml中实际上是映射的类型?
我将在Ocaml中练习使用Functional programming 如何使用映射/定义在OCaml中实际上是映射的类型?,functional-programming,ocaml,Functional Programming,Ocaml,我将在Ocaml中练习使用Map 我发现Map的用法与List、Array等有很大不同 我知道它正在应用我还没有学会的函子。但这很好 这是我的IntMap module IntMap=Map.Make(结构类型t=int let compare=compare end) 所以,现在我可以使用IntMap来add通过IntMap.add x y map等等,对吗 我有几个问题: 如何控制映射中的值的类型 如果我想要我的IntMap的别名类型,我应该怎么做?我可以做type'a my_type=
Map
我发现Map
的用法与List
、Array
等有很大不同
我知道它正在应用我还没有学会的函子。但这很好
这是我的IntMap
module IntMap=Map.Make(结构类型t=int let compare=compare end)
所以,现在我可以使用IntMap
来add
通过IntMap.add x y map
等等,对吗
我有几个问题:
如何控制映射
中的值
的类型李>
如果我想要我的IntMap
的别名类型,我应该怎么做?我可以做type'a my_type='a列表
,但是如何做map
我发现IntMap
类似于List
,它们实际上都是模块
。但是列表
有一种列表
,那么地图
呢
问:
如何控制映射中的值类型
不需要,'a IntMap.t
是一种参数化类型,包含'a
类型的值。因此,单个模块IntMap
可用于从int映射到int、从int映射到bools、从int映射到函数。。。(当然,单个映射值只能包含单个类型的绑定)。此外,没有理由试图限制IntMap.empty的类型,正如没有理由强制[]
为列表以外的任何类型一样
问:
如果我想要IntMap的别名类型,我应该怎么做?我可以在列表中键入'a my_type='但如何为map做呢
这样:
type 'a imap = 'a IntMap.t
问:
我发现IntMap类似于List,它们实际上都是模块。但是列表有一种列表类型,那么地图呢
这是Intmap.t
我在文档中看到,type+'a是从type key到type'a的映射类型
,里面的+
是什么意思?@JacksonTale看到这个问题: