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