我正在努力学习考试,我觉得讲座幻灯片让我感到困惑。
我们的一个测试问题可能是“程序programName的类型是什么”,但我很难理解这个概念。我了解数据类型是什么,但您是在回答输入的数据类型,并用箭头跟踪程序?
这是一个令我困惑的例子。他们希望我找到程序类型p2:
p2 x y z = x y!z
p2的数据类型是:
(*->[**])->*->num->**
但是,我不明白他们是如何得出这个结果的。是吗:
我感谢任何建议!
答案 0 :(得分:0)
* -> [**]
类型为x
,*
类型为y
,num
类型为z
和{{1}结果的类型。
**
是一个函数的类型,它接受foo -> bar
并返回foo
,而bar
是[baz]
的列表。 baz
和*
(以及任何其他数量的**
s)代表任意类型(限制条件是,如果相同数量的*
s出现多次类型,每次都代表相同的类型。
所以*
是一个函数,它接受任意类型的值并产生另一个任意类型的列表; x
是y
的参数类型的值; x
是z
类型的值;结果是值num
的结果类型。