2013-03-03 3 views

ответ

4

Если вы хотите только список содержит A значения, то это должно работать в качестве предиката:

isA (A _) = True 
isA _ = False 

Это просто сопоставление с образцом.

3

Что-то, что ближе к возможности писать анонимную функцию и не нужно определять новую функцию, - это понимание списка.

Например, вы можете сказать

list = [ A 1, B 2, C 3] 

wantedData = [ A n | A n <- list ] -- result: [A 1] 
1

Другая возможность:

data SomeData = A Int | B Int | C Int 
          deriving (Show, Read, Eq) 

list :: [SomeData] 
list = [ A 1, B 2, C 3 ] 

wantedData :: [SomeData] 
wantedData = filter (== A 1) list    -- wantedData is A 1 

Тест:

> wantedData 
> [A 1] 
+0

Я думаю, что ОП хотел функцию, которая получила все данные, которые были помечены 'A' – amindfv

+0

@amindfv: ах, хорошо, вы правы. Чтобы получить все данные, помеченные тегом A, лучше понять ваше понимание. ;) – jimmyt

Смежные вопросы