簡體   English   中英

在 Haskell 中創建類型實例列表

[英]Creating a list of type instances in Haskell

我正在學習 haskell 並想創建一個列表來保存這個(枚舉器?)數據。 我不確定您是否可以這樣做,或者最好創建自定義類型的單獨實例。 第一個是我剛剛開始工作。 第二個版本是我想如何持有它的一個例子。 不過,我無法想象我可以像這樣輕松地訪問數據; 你們建議我做什么?

聲明一個數據類型以保存有關位置的幾條信息並嘗試創建這些類型的列表:

這是我現在的做法:

data Place = Place {location :: String, degreesNorth :: Float, degreesEast:: Float, rainFall :: [Int]} deriving (Show)
london = Place {location="London", degreesNorth=51.5, degreesEast=(-0.1), rainFall=[0, 0, 3, 5, 8, 3, 0]}
cardiff = Place {location="cardiff", degreesNorth=12.5, degreesEast=(-4.1), rainFall=[90, 123, 3, 5, 8, 3, 0]}

首先,您不能在文件中定義兩個常量testData 因此,您可以例如將一個定義為testDatum ,將另一個定義為testData

其次,數據構造函數Place不接受列表,您應該在參數上調用它,並將Place (或多個位置)包裝在列表中,因此:

testDatum :: Place
testDatum = Place "London" 51.5 (-0.1) [0, 0, 5, 8, 8, 0, 0]

testData :: [Place]
testData = [
    Place "London" 51.5 (-0.1) [0, 0, 5, 8, 8, 0, 0]
  , Place "Cardiff" 51.5 (-0.4) [0, 0, 3, 4, 6, 2, 0]
  ]

正如@RobinZigmond 所說,您最好在此處使用記錄類型來命名參數:

data Place = Place
  { location :: String
  , latitude :: Float
  , longitude :: Float
  , rainfall :: [Int]
  }

這將自動生成諸如location:: Place -> String之類的 getter,並使更新一個字段更方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM