我有回到这种形式插件组到构造哈斯克尔
[1.2,1.3,2.3]
的阵列功能,我创建的数据:
data SpecielNumber = SP Float Float Float
我怎样才能从foo
函数返回数生成SpecielNumber
?
这样的事情不工作:(
x=[1.2,1.3,2.3]
SP x
感谢
我有回到这种形式插件组到构造哈斯克尔
[1.2,1.3,2.3]
的阵列功能,我创建的数据:
data SpecielNumber = SP Float Float Float
我怎样才能从foo
函数返回数生成SpecielNumber
?
这样的事情不工作:(
x=[1.2,1.3,2.3]
SP x
感谢
希望,这些都会提供一些线索。你应该读更多...
> data SpecielNumber = SN Float Float Float deriving (Show)
> let makeSN [x,y,z] = SN x y z
> makeSN [1.2,1.3,2.3]
SN 1.2 1.3 2.3
首先,[1.2, 1.3, 2.3]
不一个数组,它的一个列表。
二,你的数据类型SpecialNumber
需要一个构造函数名称。所以,你可以让它有这样的构造函数中的列表:
data SpecialNumber = SpecialNumber [Float]
第一SpecialNumber
是类型的名称。第二个是构造函数的名称。这些是不同的名称空间。这是传统的有两个比赛,除非你要定义一个类有不同的变种,如:
data Either a b = Left a | Right b
的Left
和Right
是替代构造和类型称为Either
。
答案的一半讨论了一个旁边的命名约定的轻微。对于单个数据构造函数与类型构造函数具有相同的内容是很常见的,这两者总是可以通过上下文区分开来,并将其留在那里。 – chepner
哦,我明白了..谢谢 – Alon