F#中是否有函数专业化,为什么不呢?

Trident D'Gao

有一种方法可以根据参数的类型在C ++中实现函数特定实现。F#中有与此类似的东西吗?

古斯

简短的回答是“否”,原因在约翰链接的问题中进行了解释。

它将与方法重载一起使用,尽管它比.F#特定于.NET的更多功能。

type T = T with
    static member test (x:'a   list) = "Generic version"  
    static member test (x:int  list) = "Specialized for int"  
    static member test (x:char list) = "Specialized for char"  

> T.test ["0"] ;;
val it : string = "Generic version"
> T.test [0] ;;
val it : string = "Specialized for int"

但是使用函数没有做到这一点的干净方法,您可以找到一些技巧,例如:

type T = T with
    static member ($) (a:T, x:'a   list) = "Generic version"  
    static member ($) (a:T, x:int  list) = "Specialized for int"  
    static member ($) (a:T, x:char list) = "Specialized for char"  

let inline f a = T $ a : string

> f ["0"] ;;
val it : string = "Generic version"
> f [0] ;;
val it : string = "Specialized for int"

但这是非常有限的,它会创建一个具有静态约束的内联函数,在当前的F#版本中,该函数并不总是能够反映相同的重载分辨率,因此,我认为您无法采用这种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

F#中是否有函数专业化,为什么不呢?

来自分类Dev

在C ++中,为什么模板函数不能具有部分专业化?

来自分类Dev

带有重载的显式模板函数专业化:为什么要这样做?

来自分类Dev

为什么泛型专业化会在泛型函数中丢失

来自分类Dev

为什么C ++中没有整数的std :: copysign专业化?

来自分类Dev

将模板成员函数的专业化定义(没有默认主体)放在源文件中是否安全?

来自分类Dev

为什么编译器不选择基于enable_if的专业化

来自分类Dev

为什么编译器不选择基于enable_if的专业化

来自分类Dev

如果没有执行我的模板专业化,为什么要对它进行编译?

来自分类Dev

为什么会有部分专业化?(那我该怎么办?)

来自分类Dev

为什么重载优先于ADL中的显式专业化

来自分类Dev

为什么在部分专业化中不能推导从属模板类型?

来自分类Dev

为什么图形管线如此专业化?(OpenGL)

来自分类Dev

为什么班级专业化存在错误?

来自分类Dev

为什么不能编译此功能模板专业化?

来自分类Dev

在构造函数中初始化变量后进行验证:为什么不这样做呢?

来自分类Dev

C ++中模板类的成员函数的专业化

来自分类Dev

类定义中构造函数的模板专业化

来自分类Dev

C ++中的模板专业化和函数重载

来自分类Dev

在子类中定义可变参数函数专业化

来自分类Dev

为什么可变参数模板的模板专业化与非可变模板的专业化不同?

来自分类Dev

在源文件中放置模板成员函数的专业化定义(没有默认主体)是否安全?

来自分类Dev

检查类是否是模板专业化

来自分类Dev

检查类是否是模板专业化?

来自分类Dev

成员函数类型的部分专业化

来自分类Dev

模板专业化-成员函数

来自分类Dev

成员函数的部分专业化

来自分类Dev

模板类构造函数的专业化

来自分类Dev

模板类构造函数的专业化

Related 相关文章

  1. 1

    F#中是否有函数专业化,为什么不呢?

  2. 2

    在C ++中,为什么模板函数不能具有部分专业化?

  3. 3

    带有重载的显式模板函数专业化:为什么要这样做?

  4. 4

    为什么泛型专业化会在泛型函数中丢失

  5. 5

    为什么C ++中没有整数的std :: copysign专业化?

  6. 6

    将模板成员函数的专业化定义(没有默认主体)放在源文件中是否安全?

  7. 7

    为什么编译器不选择基于enable_if的专业化

  8. 8

    为什么编译器不选择基于enable_if的专业化

  9. 9

    如果没有执行我的模板专业化,为什么要对它进行编译?

  10. 10

    为什么会有部分专业化?(那我该怎么办?)

  11. 11

    为什么重载优先于ADL中的显式专业化

  12. 12

    为什么在部分专业化中不能推导从属模板类型?

  13. 13

    为什么图形管线如此专业化?(OpenGL)

  14. 14

    为什么班级专业化存在错误?

  15. 15

    为什么不能编译此功能模板专业化?

  16. 16

    在构造函数中初始化变量后进行验证:为什么不这样做呢?

  17. 17

    C ++中模板类的成员函数的专业化

  18. 18

    类定义中构造函数的模板专业化

  19. 19

    C ++中的模板专业化和函数重载

  20. 20

    在子类中定义可变参数函数专业化

  21. 21

    为什么可变参数模板的模板专业化与非可变模板的专业化不同?

  22. 22

    在源文件中放置模板成员函数的专业化定义(没有默认主体)是否安全?

  23. 23

    检查类是否是模板专业化

  24. 24

    检查类是否是模板专业化?

  25. 25

    成员函数类型的部分专业化

  26. 26

    模板专业化-成员函数

  27. 27

    成员函数的部分专业化

  28. 28

    模板类构造函数的专业化

  29. 29

    模板类构造函数的专业化

热门标签

归档