Types Elm中奇怪的编译器错误

Types Elm中奇怪的编译器错误,types,elm,Types,Elm,给定代码,如(为简洁起见,删除导入): 没有类型注释或使用类型注释但使用=而不是这是编译器的问题,据报道。看起来你们都已经根据评论了解了Compariable的功能,但是对于那些喜欢跳过答案的人来说: 有两个“神奇的”类型变量可以在类型注释中使用,以约束可以传入的事物的类型。它们是: comparable(Int,Float,Char,String,以及列出其中任何一个的s元组和n元组):运算符喜欢的任何东西(似乎您需要将a标记为comparable。此类型声明类型检查fn:List comp

给定代码,如(为简洁起见,删除导入):


没有类型注释或使用类型注释但使用
=
而不是
这是编译器的问题,据报道。看起来你们都已经根据评论了解了Compariable的功能,但是对于那些喜欢跳过答案的人来说:

有两个“神奇的”类型变量可以在类型注释中使用,以约束可以传入的事物的类型。它们是:


  • comparable
    Int
    Float
    Char
    String
    ,以及
    列出其中任何一个的s元组和n元组):运算符喜欢的任何东西(似乎您需要将
    a
    标记为
    comparable
    。此类型声明类型检查
    fn:List comparable->List comparable->Bool
    。我认为这一切都是因为您可以比较可比较项目的列表。但这只是一种推测,因为我是elm的新手。:)嗯,这确实解决了它:)但是。。可比数据实际上是做什么的?我已经看到了这个关键字,但我认为在这个上下文中,这只是一个占位符,用来表示变量,它和我使用的
    a
    一样好。“可比较的实际用途是什么”我不知道。我猜是某种内置类型的约束。我是elm的新手,这就是为什么我将其发布为一条评论,等待了解更多信息的人:)好吧,看来“可比”确实是一个类型约束:
    fn: List a -> List a -> Bool
    fn x y =
      x < y
    
    main =
      text (toString(fn [1,1] [1,2]))
    
    The type annotation for `fn` does not match its definition.
    
    15| fn: List a -> List a -> Bool
            ^^^^^^^^^^^^^^^^^^^^^^^^
    The type annotation is saying:
    
        List a -> List a -> Bool
    
    But I am inferring that the definition has this type:
    
        List a -> List a -> Bool