次のような Haskell 型を定義しました。
data TypeData = TypeA Int | TypeB String | TypeC Char deriving (Eq, Show)
ある時点で、[TypeData]
すべての非 TypeC インスタンスをフィルタリングする方法が必要です。私が書こうとしている関数の署名は次のとおりです。
-- Returns a tuple containing (TypeC elements, non-TypeC elements)
partitionTypeCs :: [TypeData] -> ([TypeData],[TypeData])
関数はこれpartition
に適しているようでした:
-- Attempt:
partitionTypeCs data = partition (TypeData -> Bool) data
ただし、どの関数が型 signature に一致するかわかりませんTypeData -> Bool
。型インスタンスが特定のインスタンスのものかどうかを判断できる関数が必要なようです。別の関数 ( ) を記述することでパターン マッチングを使用できることはわかっていますisTypeC (TypeC _) = True
が、型インスタンスを一致させるより一般的な方法またはラインラインの方法はありますか?