2011-10-11 79 views
2

我制作了这种数据类型,其中有很多重复。有没有更好的方式来表达这种类型?

data JobState = UnsanitizedData Handle 
       | SanitizedData Handle 
       | VerifiedData Handle 
       | JobFail Handle 

我不希望任何这些JobState在没有Handle的情况下使用。但重复让我怀疑我没有正确表达这一点。有没有更好的办法?

回答

10

一种方式将不会考虑此因素伸到状态值,包括手柄的包装:

data JobState = UnsanitizedData | SanitizedData | VerifiedData | JobFail 
    deriving (Eq, Enum, Ord, Show, Read) 
data Job = Job { jobState :: JobState, jobHandle :: Handle } 
-- or: data Job = Job JobState Handle 
+0

这就是它!这就是我想要的。我会接受什么时候让我。 –

相关问题