adam.smyczek: > Example: > > data SampleType = A | B Int | C String | D -- .... etc. > > sampleTypes = [A, B 5, C "test"] :: [SampleType] > > How do I find for example element A in the sampleTypes list? > Do I have to create e.g.: > > isA :: SampleType -> Bool > isA A = True > isA _ = False > > for every constructor and use find? > It feels like this is not the quicker method.
This is where the implicit filtering in a list comprehension comes in really handy, data T = A | B Int | C String | D deriving Show xs = [A, B 5, C "test", D] main = do print [ A | A <- xs ] -- filter A's print [ x | x@(C _) <- xs ] -- filter C's {- *Main> main [A] [C "test"] -} _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe