它是什么意思' 简单变量'在Hudak的Haskell SOE书中,第173页上标有红色问号?
有人可以解释以下句子的含义吗?
...构造函数的每个参数 - >要求是一个简单的 变量
->
是一个类型构造函数吗?不是数据构造函数。我是否正确?
所以->
的论点应该是类型。这是我理解的,但我没有
通过这句话了解Hudak的意思。
答案 0 :(得分:5)
在普通的Haskell中,可以给出实例的“模式”类型受到很大限制。特别是,它们应该是具有一些类型变量的单一类型构造函数,并且每个类型变量可能有自己的约束。
值得一提的是。与表达式非常相似,类型具有类型变量,在“类型级别”中只能看作固定但未知的变量。
这些限制最初的目的是确保类型类解决方案终止。从那以后,更复杂的类型类实例的值已经通过更复杂的算法来实现,用于解决类型类,并且这些限制已经在很多方面被提升。
但是对Hudak来说,我相信他之前写的很多工作都已经发生了。您可以将(->)
视为前缀类型构造函数,与其他任何
type A a b = a -> b
然后将Hudak的声明解释为类型类实例只能定位以下形式的东西
instance Foo A where
instance Bar (A a) where
instance Baz (A a b) where
我们现在可以看到他的陈述的含义 - 应用于A
的每个类型都是“简单(类型)变量”。