次の例を検討してください。
data TestType = Free | Occupied { oc_field1 :: Int,
oc_field2 :: Int,
oc_field3 :: Int,
oc_field4 :: Int
}
type SampleTest = [TestType]
filterOccupied :: SampleTest -> SampleTest
filterOccupied test = filter (\x -> case x of
Occupied _ _ _ _ -> True
Free -> False ) test
上記の例では、filterOccupied 内で型_
を一致させるために 4 つを使用する必要がありますOccupied
。
レコードに 10 個を超えるフィールドがある場合、これは非常に苦痛になります。これを行うより良い方法はありますか?