列表的F#类型注释

t3r*_*rse 9 f# c#-to-f#

在F#中,类型列表的类型注释是什么(例如int的列表)?通过一个简单的函数,我可以做如下注释:

let square(x:int)= ...

我已将x注释为int类型.但是如果我想为int列表做一个类型注释呢?例如,假设我有一个需要列表的max函数 - 我该如何为它做一个类型注释?

让max(数字:??)= ...

Tom*_*cek 23

有两种选择:

let max (numbers:int list) = ... 
let max (numbers:list<int>) = ... 
Run Code Online (Sandbox Code Playgroud)

第一个版本使用从OCaml继承的语法(并且经常用于原始F#类型,例如列表).第二个版本使用.NET语法(并且更常用于.NET类型或在F#中编写面向对象的代码时).但是,它们都意味着完全相同的事情.

在任何情况下,类型的注释的形式总是(<something> : <type>)其中<something>是(在参数列表)任一个图案或表达.这意味着,int listlist<int>仅仅类型的名称.如果输入某个值,F#Interactive将打印该类型,因此您可以使用它来了解有关如何编写类型名称的更多信息:

> [1;2;3]
val it : int list = [ 1; 2; 3 ]
Run Code Online (Sandbox Code Playgroud)