Haskell读取无解析器错误

Haskell读取无解析器错误,haskell,Haskell,我有这行代码,但有一些问题 type PhonePad = [(Int,String)] dayPad = [(1,"Monday"), (2,"Tuesday")] -- I don't list out all of them data PhoneDay = Monday | Tuesday deriving (Eq, Ord,Show,Read,Bounded) testtt :: PhonePad -> Int -> String testtt p d = snd $

我有这行代码,但有一些问题

type PhonePad = [(Int,String)]
dayPad = [(1,"Monday"), (2,"Tuesday")] -- I don't list out all of them
data PhoneDay = Monday | Tuesday
    deriving (Eq, Ord,Show,Read,Bounded)
testtt :: PhonePad -> Int -> String
testtt p d = snd $ (filter (\x -> fst x == d) p)!!0
我想显示号码的电话簿类型。说
testtt dayPad 2==“星期二”
我想在星期二得到

read $ testtt dayPad 2 :: PhonePad
但它总是返回一个错误消息:

*** Exception: Prelude.read: no parse

有人知道这里出了什么问题吗?

星期二
不是
电话板
,而是
电话日
。试图将字符串
“星期二”
作为
类型PhonePad=[(Int,string)]
读取会导致错误,因为它的格式不像
Int
s和
string
s的元组列表

Prelude> (read $ testtt dayPad 2) :: PhonePad
*** Exception: Prelude.read: no parse
testtt dayPad 2==“星期二”

如果您改为尝试将字符串
作为
PhoneDay
来读取,它会工作

Prelude> (read $ testtt dayPad 2) :: PhoneDay
Tuesday

星期二
不是
电话本
,而是
电话日
。试图将字符串
“星期二”
作为
类型PhonePad=[(Int,string)]
读取会导致错误,因为它的格式不像
Int
s和
string
s的元组列表

Prelude> (read $ testtt dayPad 2) :: PhonePad
*** Exception: Prelude.read: no parse
testtt dayPad 2==“星期二”

如果您改为尝试将字符串
作为
PhoneDay
来读取,它会工作

Prelude> (read $ testtt dayPad 2) :: PhoneDay
Tuesday

您真的需要
电话板中的字符串吗?
typephonepad=[(Int,PhoneDay)]
就足够了吗?你真的需要
PhonePad中的字符串吗?
键入PhonePad=[(Int,PhoneDay)]
就足够了吗?