2016-10-03 65 views
-1

我有回到這種形式插件組到構造哈斯克爾

[1.2,1.3,2.3] 

的陣列功能,我創建的數據:

data SpecielNumber = SP Float Float Float 

我怎樣才能從foo函數返回數生成SpecielNumber

這樣的事情不工作:(

x=[1.2,1.3,2.3] 
    SP x 

感謝

回答

2

希望,這些都會提供一些線索。你應該讀更多...

> 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 
+0

哦,我明白了..謝謝 – Alon

3

首先,[1.2, 1.3, 2.3]不一個數組,它的一個列表。

二,你的數據類型SpecialNumber需要一個構造函數名稱。所以,你可以讓它有這樣的構造函數中的列表:

data SpecialNumber = SpecialNumber [Float] 

第一SpecialNumber是類型的名稱。第二個是構造函數的名稱。這些是不同的名稱空間。這是傳統的有兩個比賽,除非你要定義一個類有不同的變種,如:

data Either a b = Left a | Right b 

LeftRight是替代構造和類型稱爲Either

+1

答案的一半討論了一個旁邊的命名約定的輕微。對於單個數據構造函數與類型構造函數具有相同的內容是很常見的,這兩者總是可以通過上下文區分開來,並將其留在那裏。 – chepner