我正在尝试在Haskell中建模一些多态类型的数据。我知道以下代码为什么不能工作,但我希望这能说明我想做什么。我的问题是:用Haskell建模这个有什么惯用方式?(如果有更好的方法,您不需要保留输入格式- 我没有任何现有的代码或数据。)
data Running = Sprint | Jog deriving (Show)
data Lifting = Barbell | Dumbbell deriving (Show)
data Time = Time Integer deriving (Show)
data Pounds = Pounds Integer deriving (Show)
data TimedActivity = TimedActivity Running Time deriving (Show)
data WeightedActivity = WeightedActivity Lifting Pounds deriving (Show)
class Activity a
instance Activity TimedActivity
instance Activity WeightedActivity
-- I have a list of activities
main :: IO ()
main = putStrLn $ show [ TimedActivity Sprint (Time 10)
, WeightedActivity Barbell (Pounds 100)
]
-- I then want to apply functions to generate summaries and
-- reports from those activities, i.e.:
extractLifts :: (Activity x) => [x] -> [WeightedActivity]
extractTimes :: (Activity x) => [x] -> [TimedActivity]
class Activity a
和两个instance Activity
行的末尾缺少了一些where
。但我正在努力提供一个真正的答案。 - bheklilr