Functional programming 您能否检查Elm中的两个变量是否具有相同的类型?

Functional programming 您能否检查Elm中的两个变量是否具有相同的类型?,functional-programming,typeclass,elm,Functional Programming,Typeclass,Elm,我想写作 Check: a -> b -> Bool 其中,如果a和b的类型相同,则check返回true。这在elm中可能吗?在严格类型化的语言(如elm)中,您缺少了一个基本点。不可能达到需要动态检查类型的情况,因为编译器会在开发时强制您使用相同的类型,因为它的静态类型检查 动态类型语言和静态类型语言的比较唤起了程序员的巨大情感。自己决定喜欢什么。在严格键入的语言(如Elm)中,您缺少了一个基本点。不可能达到需要动态检查类型的情况,因为编译器会在开发时强制您使用相同的类型,因为

我想写作

Check: a -> b -> Bool

其中,如果a和b的类型相同,则check返回true。这在elm中可能吗?

在严格类型化的语言(如elm)中,您缺少了一个基本点。不可能达到需要动态检查类型的情况,因为编译器会在开发时强制您使用相同的类型,因为它的静态类型检查


动态类型语言和静态类型语言的比较唤起了程序员的巨大情感。自己决定喜欢什么。

在严格键入的语言(如Elm)中,您缺少了一个基本点。不可能达到需要动态检查类型的情况,因为编译器会在开发时强制您使用相同的类型,因为它的静态类型检查


动态类型语言和静态类型语言的比较唤起了程序员的巨大情感。你自己决定你喜欢什么。

也许我太胖了,但是
check:a->a->Bool;检查a b=真
?如果
a
b
具有相同的类型,则返回
true
,如果没有,则编译失败。(我很难想象这样一种情况:在一种类型系统像Elm这样严格的语言中,你最终得到的值的类型你不知道。)你需要GADT来进行动态类型相等性检查,我认为Elm没有这些功能。@gsg GADTs pattner不匹配构造函数的标记,而不是底层类型?因此,OP可以与
True
/
False
匹配,但不能与
Bool
匹配,前提是布尔值在Elm中实现为求和类型。@ftor:使用GADTs,您可以对模式匹配的类型进行表示。从这个意义上讲,您可以与
Bool
进行匹配。此外,GADT模式匹配提供了类型均衡,因此您可以使用此模式匹配动态地满足类型检查器的要求,即某个对象的类型为
Bool
。这一切的机制有点复杂,Elm没有(除非最近添加了GADT?),所以OP似乎不太走运。也许我有点笨,但是
check:a->a->Bool;检查a b=真
?如果
a
b
具有相同的类型,则返回
true
,如果没有,则编译失败。(我很难想象这样一种情况:在一种类型系统像Elm这样严格的语言中,你最终得到的值的类型你不知道。)你需要GADT来进行动态类型相等性检查,我认为Elm没有这些功能。@gsg GADTs pattner不匹配构造函数的标记,而不是底层类型?因此,OP可以与
True
/
False
匹配,但不能与
Bool
匹配,前提是布尔值在Elm中实现为求和类型。@ftor:使用GADTs,您可以对模式匹配的类型进行表示。从这个意义上讲,您可以与
Bool
进行匹配。此外,GADT模式匹配提供了类型均衡,因此您可以使用此模式匹配动态地满足类型检查器的要求,即某个对象的类型为
Bool
。所有这些的机器都有点复杂,Elm没有(除非最近添加了GADT?),所以OP似乎不太走运。