胡达克哈斯克尔表达学院的术语

时间:2014-09-21 14:27:14

标签: haskell terminology

它是什么意思' 简单变量'在Hudak的Haskell SOE书中,第173页上标有红色问号?

有人可以解释以下句子的含义吗?

  

...构造函数的每个参数 - >要求是一个简单的   变量

->是一个类型构造函数吗?不是数据构造函数。我是否正确? 所以->的论点应该是类型。这是我理解的,但我没有 通过这句话了解Hudak的意思。

enter image description here enter image description here enter image description here

1 个答案:

答案 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的每个类型都是“简单(类型)变量”。