举个丑陋的例子:
data Bighead = Big
little = 1
f1 = little :: Int
f2 = Big :: BigHead
在我看来:
f1
和f2
都指向一些数据。(little
和Big
)唯一的不同是很少有一段代码来做评估。但Big并非如此。
它们都有一个可重写的主体,几乎不能从一个数据集合转换成一个结果,而Big就是不做最后一步-它总是保存这些数据表单(但可以递归地计算它们)。
但在语法形式上,它们几乎是相同的:可以应用,可以求值。
一个大问题可能是函数不能改变它的应用参数,但数据可以改变。
这是Haskell区别对待数据和函数名称的唯一原因吗?
调用分析:-)
编辑: more pads
data A = B Int
B
的类型
B :: Int -> A
b :: Int -> A
b = B
https://stackoverflow.com/questions/6237775
复制相似问题