大多数编程语言都有一些在编译时根据类型选择实现的方法。函数重载是执行此操作的常用方法。使用模板(在 C++ 或 D 中可能带有约束)是另一种选择。
但是在 F# 中,如果不使用类方法,我无法找到如何做到这一点,从而失去了一些不错的属性,比如柯里化。
let f (a:int) =
给Duplicate definition of 'f'
F# 具有静态解析的类型参数,但我不知道如何使用它..
let f (a:^T) =
match T with
给The value or constructor of T is not defined
在match T
let f (a:^T) =
match a with
| :> int as i ->
给Unexpected symbol ':>' in expression
let f (a:^T) =
match ^a with
| :> int as i ->
给Unexpected infix operator in expression