Generics 我可以为自己的类型使用特殊的泛型语法吗?

Generics 我可以为自己的类型使用特殊的泛型语法吗?,generics,f#,Generics,F#,在F#中,某些类型有一种特殊的泛型语法(我不确定它叫什么),因此您可以: int list // instead of List<int> int option // instead of Option<int> int list//而不是list int option//而不是option 这个语法叫什么 我可以为我自己的类型启用它吗 这在 在“泛型类型”下: 泛型 类型参数泛型类型名称|'a列表 或 泛型类型名称|列表={ V:‘a’ };; 设stringDa

在F#中,某些类型有一种特殊的泛型语法(我不确定它叫什么),因此您可以:

int list // instead of List<int>
int option // instead of Option<int>
int list//而不是list
int option//而不是option
  • 这个语法叫什么
  • 我可以为我自己的类型启用它吗
这在

在“泛型类型”下:

泛型

类型参数泛型类型名称|
'a列表

泛型类型名称|
列表={
V:‘a’
};;
设stringDave:dave={V=“string”};;
//val stringDave:dave={V=“string”;}
设intDave:intDave={V=123};;
//val intDave:dave={V=123;}

首先,需要注意的是,
list
list
之间的区别与前缀和后缀语法没有直接关系。类型
'T list
只是类型
list的别名
type List<'T> = 
   | ([])  :                  'T list
   | (::)  : Head: 'T * Tail: 'T list -> 'T list
   interface System.Collections.Generic.IEnumerable<'T>
   interface System.Collections.IEnumerable
   interface System.Collections.Generic.IReadOnlyCollection<'T>
   interface System.Collections.Generic.IReadOnlyList<'T>

and 'T list = List<'T>
int list
int List
list<int>
List<int>
type MyCoolType<'a> = A | B

let x : int MyCoolType = A
// compiles ✔