2015-10-23 3 views
-2

Я попытался написать функцию Haskell, где элемент будет сравниваться со списком. Казалось, что это так просто, но он не работает.Сравнение списка с haskell

zeich :: Char -> Bool 

zeich x = elem x ['a','v','b'] 

Также как я должен использовать тип данных? Чтобы вы также могли вводить цифры?

+5

Что «не работает» об этом? – MathematicalOrchid

+5

Что здесь не работает? Какой тип данных вы имеете в виду? Где вы хотите ввести цифры? – crockeea

ответ

0

zeich Ваша функция просто отлично, быстро сессия ghci дает:

λ: let zeich :: Char -> Bool; zeich x = elem x ['a', 'v', 'b'] 
λ: zeich 'b' 
True 
λ: zeich 'c' 
False 

Если вы хотите сохранить символы и номера в списке вам необходимо разработать новый тип, который может вместить значения любого типа, например

λ: data Element = Letter Char | Number Int deriving Eq 

с помощью которого можно затем определить zeich2 номер, который принимает значения типа Element:

λ: let zeich2 :: Element -> Bool; zeich2 x = elem x [Letter 'a', Number 3, Letter 'b'] 
λ: zeich2 (Letter 'a') 
True 
λ: zeich2 (Number 3) 
True 
λ: zeich2 (Number 4) 
False 
+0

А, я видела свою ошибку. Всегда оставлено «в ghci». Возможно ли написать функцию, где вы можете просто написать букву без буквы? – letter

+1

№ Письма без '' являются идентификаторами. –

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