我有这行代码,但它有一些问题..
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
Run Code Online (Sandbox Code Playgroud)
我想显示一个号码的PhonePad类型.说testtt dayPad 2 == "Tuesday"
我想得到Tuesday:
read $ testtt dayPad 2 :: PhonePad
Run Code Online (Sandbox Code Playgroud)
但它始终返回错误消息:
*** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)
有谁知道这里有什么问题吗?
Tuesday不是PhonePad,它是一个PhoneDay.试图读取该字符串"Tuesday"作为type PhonePad = [(Int,String)]一个错误的结果,因为它没有格式化像一个元组列表IntS和String秒.
Prelude> (read $ testtt dayPad 2) :: PhonePad
*** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)
(testtt dayPad 2 == "Tuesday")
如果您尝试读取字符串"Tuesday"作为PhoneDay它的工作原理.
Prelude> (read $ testtt dayPad 2) :: PhoneDay
Tuesday
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |