2011-10-11 122 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

這就是它!這就是我想要的。我會接受什麼時候讓我。 –

相關問題