将类型签名分配为变量

佐恩

假设我有一个排序算法和两个自定义比较器:

mySort :: [[Int]] -> ([Int] -> [Int] -> Ordering) -> [[Int]]
mySort = undefined

myCmp1 :: [Int] -> [Int] -> Ordering
myCmp1 xs ys
  | a0 < b0 = LT
  | a0 > b0 = GT
  | a1 < b1 = LT
  | a1 > b1 = GT
  | a1 == b1 = EQ where
    a0 = head xs
    b0 = head ys
    a1 = last xs
    b1 = last ys

myCmp2 :: [Int] -> [Int] -> Ordering
myCmp2 xs ys
  | a0 > b0 = LT
  | a0 < b0 = GT
  | a1 > b1 = LT
  | a1 < b1 = GT
  | a1 == b1 = EQ where
    a0 = head xs
    b0 = head ys
    a1 = last xs
    b1 = last ys

有什么方法可以定义类型签名,[Int] -> [Int] -> Ordering以便我可以像这样使用它?

comparator = [Int] -> [Int] -> Ordering

mySort :: [[Int]] -> comparator -> [[Int]]
mySort = undefined
丹尼尔·瓦格纳(Daniel Wagner)

这是类型别名的作用:

type Comparator = [Int] -> [Int] -> Ordering

他们也可以接受以下论点:

type Comparator a = a -> a -> Ordering

然后你可以写,例如

mySort :: Comparator a -> [a] -> [a]

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

data.frame尝试将变量名分配为标记而不是变量内容?

来自分类Dev

PyMySQL在Python中为表名分配变量

来自分类Dev

MYSQL将列名分配给变量?

来自分类Dev

C编译器是否为用于声明数组的变量名分配内存?

来自分类Dev

从主机名分配变量

来自分类Dev

将循环内的行名分配给构造的变量名

来自分类Dev

如何将字符串作为变量名分配

来自分类Dev

无法将类型为Int的变量分配给定义为Int的枚举

来自分类Dev

类型为空,无法分配变量?

来自分类Dev

为什么我需要在声明中使用类型断言来将变量分配为null?

来自分类Dev

无法将结构的地址分配给类型为指向该结构的指针的typedef的变量

来自分类Dev

将变量分配给递增的标签名称

来自分类Dev

将单位类型分配给变量

来自分类Dev

将任何类型分配给变量

来自分类Dev

jQuery验证-将规则分配为变量

来自分类Dev

C ++将类型A的变量分配给扩展了A的类型B

来自分类Dev

korn shell将文件名分配给数组

来自分类Dev

Swift无法将类型'()'的值分配为类型'String?'

来自分类Dev

无法将“ MenuView”类型的值分配为“ some View”类型

来自分类Dev

BigCommerce-将全局变量分配为javascript变量

来自分类Dev

将VBScript变量设置为未知类型

来自分类Dev

将变量名设置为类型

来自分类Dev

签名重载:不能将类型为“布尔值”的参数分配给类型为“ true”的参数

来自分类Dev

无法将类型为(()-> Void)的值分配为类型为((()-> Void)!''

来自分类Dev

将动态数组类型分配给TArray <T>变量

来自分类Dev

将变量类型分配给数字java

来自分类Dev

将类型传递为变量,然后与对象类型进行比较

来自分类Dev

无法将类型\'Observable <{}> \'分配为键入角度2

来自分类Dev

将Java程序的输出分配为bash shell变量

Related 相关文章

  1. 1

    data.frame尝试将变量名分配为标记而不是变量内容?

  2. 2

    PyMySQL在Python中为表名分配变量

  3. 3

    MYSQL将列名分配给变量?

  4. 4

    C编译器是否为用于声明数组的变量名分配内存?

  5. 5

    从主机名分配变量

  6. 6

    将循环内的行名分配给构造的变量名

  7. 7

    如何将字符串作为变量名分配

  8. 8

    无法将类型为Int的变量分配给定义为Int的枚举

  9. 9

    类型为空,无法分配变量?

  10. 10

    为什么我需要在声明中使用类型断言来将变量分配为null?

  11. 11

    无法将结构的地址分配给类型为指向该结构的指针的typedef的变量

  12. 12

    将变量分配给递增的标签名称

  13. 13

    将单位类型分配给变量

  14. 14

    将任何类型分配给变量

  15. 15

    jQuery验证-将规则分配为变量

  16. 16

    C ++将类型A的变量分配给扩展了A的类型B

  17. 17

    korn shell将文件名分配给数组

  18. 18

    Swift无法将类型'()'的值分配为类型'String?'

  19. 19

    无法将“ MenuView”类型的值分配为“ some View”类型

  20. 20

    BigCommerce-将全局变量分配为javascript变量

  21. 21

    将VBScript变量设置为未知类型

  22. 22

    将变量名设置为类型

  23. 23

    签名重载:不能将类型为“布尔值”的参数分配给类型为“ true”的参数

  24. 24

    无法将类型为(()-> Void)的值分配为类型为((()-> Void)!''

  25. 25

    将动态数组类型分配给TArray <T>变量

  26. 26

    将变量类型分配给数字java

  27. 27

    将类型传递为变量,然后与对象类型进行比较

  28. 28

    无法将类型\'Observable <{}> \'分配为键入角度2

  29. 29

    将Java程序的输出分配为bash shell变量

热门标签

归档