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

jhe*_*dus -1 haskell terminology

在Hudak的Haskell SOE书中,第173页的" 简单变量 "(用红色问号标记)是什么意思?

有人可以解释下面的句子是什么意思吗?

...构造函数的每个参数 - >都必须是一个简单的变量.

->是一个类型构造函数吧?不是数据构造函数.我是否正确?所以论证->应该是类型.这是我理解的,但我不知道Hudak在这句话中的含义.

在此输入图像描述 在此输入图像描述 在此输入图像描述

J. *_*son 5

在普通的Haskell中,可以给出实例的"模式"类型受到很大限制.特别是,它们应该是具有一些类型变量的单一类型构造函数,并且每个类型变量可能有自己的约束.

值得一提的是.与表达式非常相似,类型具有类型变量,在"类型级别"中只能看作固定但未知的变量.

这些限制最初的目的是确保类型类解决方案终止.从那时起,更复杂的类型类实例的价值已经通过用于解决类型类的更复杂的算法来实现,并且这些限制已经在许多方面被提升.

但是对Hudak来说,我相信他在写这些工作之前就已经写过了.您可以(->)像其他任何一样看到前缀类型构造函数

type A a b = a -> b
Run Code Online (Sandbox Code Playgroud)

然后解释Hudak的声明,说类型类实例只能定位以下形式的东西

instance Foo  A      where
instance Bar (A a)   where
instance Baz (A a b) where
Run Code Online (Sandbox Code Playgroud)

现在我们可以看到他的陈述的含义 - 每种类型都应用于A"简单(类型)变量".