Function 包含单位F的函数定义#

Function 包含单位F的函数定义#,function,f#,Function,F#,我是f#编程新手,我正在定义一些要使用的辅助函数。以下是其中两个: let GetPieceAt piece playerType file rank = { piece = {piece = piece; playerType = playerType} ; place = { file= file; rank = rank} } let GetPieceOnRank piece rank player

我是f#编程新手,我正在定义一些要使用的辅助函数。以下是其中两个:

    let GetPieceAt piece playerType file rank = { 
        piece = {piece = piece; playerType = playerType}  ; 
            place = { file= file; rank = rank} 
            }

    let GetPieceOnRank piece  rank playerType files () = 
        [for f in files -> GetPieceAt piece playerType f rank]
第一个函数的类型正确:工件->播放器类型->文件->等级->工件

但是,第二个函数有:工件->等级->播放器类型->序列->单位->工件列表

这个单位是从哪里来的?我的另一个函数调用这个函数是get unit->unit…->{correct return value},这会出错

我做错了什么?

单位
在F#中由
GetPieceOnRank
定义中的空括号表示

与C#不同,函数不需要调用括号。也许这些括号的位置是一个错误,因为它们不需要,简单地删除它们仍然允许代码编译

let GetPieceOnRank piece  rank playerType files = 
    [for f in files -> GetPieceAt piece playerType f rank]

末尾的这两个括号是
unit
类型的值。在交互式中尝试以下操作:

let a = ();;
> val a : unit = ()
由于您将此值放入参数列表中,编译器正确地推断出您的函数具有类型为
unit

的最后一个参数,第二个函数定义中的()表示类型为unit的附加参数,请删除此值,函数签名应如您所期望的那样。我认为您需要()定义一个函数,我的错!