Types f函数签名中的#符号是什么意思?

Types f函数签名中的#符号是什么意思?,types,casting,f#,symbols,type-signature,Types,Casting,F#,Symbols,Type Signature,我见过这样定义的函数: let private applyTarget (logger:#ILogger) ceiling target = logger.Debug "enforce ceiling" match target > ceiling with | true -> ceiling | false -> target 签名中的#符号是什么意思 logger:ILogger和logger:ILogger之间有什么区别?类型签名\t称为“灵活类

我见过这样定义的函数:

let private applyTarget (logger:#ILogger) ceiling target =
    logger.Debug "enforce ceiling"
    match target > ceiling with
    | true -> ceiling | false -> target
签名中的#符号是什么意思

logger:ILogger
logger:ILogger
之间有什么区别?

类型签名
\t
称为“灵活类型”,它只是
'A when'A:>t
的缩写

也就是说,
#t
的意思是“t的任何子类型”

我相信它是一个。我怀疑,因为F#中的向上转换并不总是隐式的,所以不使用灵活类型强制调用方使用它是有意义的。