2016-10-03 6 views
-1

私は、このフォーム挿入配列Haskellの

[1.2,1.3,2.3] 

の配列を返す機能を持っていると私はデータ作成:

data SpecielNumber = SP Float Float Float 

をどのように生成する番号を返すfoo機能からI 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は、型の名前です。 2番目はコンストラクタの名前です。これらは異なる名前空間です。あなたのような、さまざまなバリエーションを持つ型を定義されていない限り、2つの試合を持っているために、従来である:

data Either a b = Left a | Right b 

LeftRightは、代替コンストラクタであり、タイプがEitherと呼ばれています。

+1

答えの半分は命名規則のマイナーな面を議論します。おそらく、「単一のデータコンストラクタが型コンストラクタと同じものを持つことは一般的ですが、2つは常にコンテキストによって区別できます」と言うだけで十分でしょう。 – chepner