Mic*_*ard 2 haskell algebraic-data-types
我已经制作了这种数据类型,其中有很多重复.
data JobState = UnsanitizedData Handle
| SanitizedData Handle
| VerifiedData Handle
| JobFail Handle
Run Code Online (Sandbox Code Playgroud)
我不希望任何这些JobStates在没有Handle的情况下使用.但重复让我怀疑我没有正确表达这一点.有没有更好的办法?
bdo*_*lan 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
Run Code Online (Sandbox Code Playgroud)