首页 > 解决方案 > F# 中 OCaml 样式的泛型类型参数的语法是什么?

问题描述

根据这个答案,F# 支持 OCaml 样式类型参数。问题中的示例是:

type 'a NestedList = List of 'a NestedList list | Elem of 'a

但是,我在 F# 文档的任何地方都找不到此语法,而且,我无法让 F# 编译器接受我提供链接的答案中的语法。编译器不接受这种使用多个参数的尝试:

type ('a * 'b) SomeType = ('a * 'b)

然而,这有效:

type ('a , 'b) SomeType = ('a * 'b)
let x:SomeType<int,int> = (4,5)

根据 Rider 在 x 上方显示的类型注释,我假设这是公认的语法,但我想知道这是在哪里记录的,以及我是否做对了。 骑士截图

标签: genericsf#ocaml

解决方案


你说的对。您链接到的答案是错误的。type ('a * 'b) someType在 OCaml 中也无效。多个类型参数也应该用逗号分隔:type ('a, 'b) someType.

F# 语言(包括其语法)在F# 语言规范中指定。类型的语法参见第 5 章(在 4.1 规范中),类型定义参见第 8 章。


推荐阅读