Есть ли лучший способ выразить этот тип?
Я сделал этот тип данных, в котором много повторений.
data JobState = UnsanitizedData Handle
| SanitizedData Handle
| VerifiedData Handle
| JobFail Handle
Я не хочу, чтобы какое-либо из этих JobStates использовалось без Handle. Но повторение заставляет меня подозревать, что я не выражаю это правильно. Есть ли способ лучше?
1 ответ
Решение
Одним из способов было бы выделить это в значение состояния и обертку, которая включает дескриптор:
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