我有回到這種形式插件組到構造哈斯克爾
[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