1
我有一個名爲Event的數據類型。它看起來像這樣:值構造函數中的字面值
data Event = Event { tag :: String
, description :: String
, date :: String
} deriving (Eq, Show)
我想打一個特殊的事件,將始終在tag
和date
領域回退值。基本上,我想寫點東西像這樣的(請原諒不正確的語法):
data GeneralEvent = Event String String String
| FaultyEvent "unknown-tag" String "unknown-date"
使用記錄語法定義FaultyEvent
也似乎並沒有提供解決的辦法(再次,請原諒不正確的語法) :
data FaultyEvent = FaultyEvent { "unknown-tag" :: String
, description :: String
, date :: String
} deriving (Eq, Show)
是否有創建在Haskell一種特殊的Event
的一個很好的方式?還是我的語法問題是由於沒有用適當的Haskell方式思考而引起的?
定義構建您的特殊事件的函數。 –
要回應n.m.的評論,這應該是有趣的:https://wiki.haskell.org/Smart_constructors – Jubobs
你想要什麼不能做。不過你可能對[智能構造函數]感興趣(https://wiki.haskell.org/Smart_constructors) – Bakuriu