简单的`Read`实例错误地`read`s

问题描述 投票:0回答:1

SO是一场狗屎秀。感谢您的搭车。

haskell
1个回答
8
投票

问题不在

read
,而在
show
。您的
show
实现不会强制输入
Foo
类型的输入值,因为它无条件返回
"Foo"
,甚至不匹配构造函数。如果您使用派生的
Show
实例,或手动编写其等效项:

instance Show Foo where
  show Foo = "Foo"

那么当您尝试解析格式错误的字符串时,您将得到预期的错误,因为评估

show
实际上需要解析输入字符串。

© www.soinside.com 2019 - 2024. All rights reserved.