例如http://msdn.microsoft.com/en-us/library/ee370378.aspx示例List.map : ('T -> 'U) -> 'T list -> 'U list
。
很抱歉,如果这听起来过于简单,但谷歌搜索没有解释。
谢谢!
答案 0 :(得分:5)
在这种情况下,'T
和'U
是任意类型。
在其他情况下,可能会使用约束对't
进行限制。
有时,这些名称可能具有描述性,例如'key
或'value
。在F#中,关键是类型之前的'
使其成为通用。
类似地,类型可以以#
作为前缀,允许任何可以向上转换为给定类型的类型。
使用内联方法的更复杂的类型约束可以在类型名称之前与^
一起使用,允许使用.Net类型系统无法实现的成员约束,并且只能使用F#内联函数。
答案 1 :(得分:3)
从规格:
形式'ident是一种变量类型。例如,以下是所有变量类型:
'a
'T
'Key
关于为什么'T
而非'a
:
注意:此规范通常使用大写标识符,例如 'T或'用户声明的泛型类型参数和用途的键 用于编译器推断的泛型的小写标识符,例如'a或'b 参数。
http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html
在这种情况下,所有这意味着List.map : ('T -> 'U) -> 'T list -> 'U list
接受一个将'T
类型值转换为'U
类型的函数,一个'T类型值列表并返回'列表' 'U'类型值 - 当然,这是地图的作用。