比较Haskell中的不同数据类型

比较Haskell中的不同数据类型,haskell,type-conversion,typing,Haskell,Type Conversion,Typing,试图找出比较两个值相似但类型不同的元素的最佳方法 例如,如果用户输入“A”、“B”或“C”以及其他任何内容的“否”,则此函数应打印“是” data Letter = A | B | C deriving (Read, Show) type LetterList = [Letter] main = do putStrLn "Enter a capital letter, and we'll see if it's in the Letter type!" myLetter <-

试图找出比较两个值相似但类型不同的元素的最佳方法

例如,如果用户输入“A”、“B”或“C”以及其他任何内容的“否”,则此函数应打印“是”

data Letter = A | B | C deriving (Read, Show)
type LetterList = [Letter]

main = do
   putStrLn "Enter a capital letter, and we'll see if it's in the Letter type!"
   myLetter <- getLine
   if myLetter `elem` myLetters -- here's the rub
       then do
           print "Yes"
       else do
           print "No" 
   where
      myLetters :: LetterList
      myLetters = [A,B,C]
数据字母=A | B | C派生(读取、显示)
键入字母列表=[字母]
main=do
putStrLn“输入大写字母,我们将查看它是否为字母类型!”

myLetter对于您的特定示例,您可以尝试使用以下方法解析字符串:

请参见更简单的。
case reads myLetter :: [(Letter, String)] of
    [(_, "")] -> putStrLn "yes"
    otherwise -> putStrLn "no"