【发布时间】:2017-11-11 09:23:43
【问题描述】:
我有一个类型,我已经创建了Show 类的实例,但我没有得到想要的结果。如果我尝试通过使用 deriving 单词使其成为 show 类的实例,那么它可以工作,但如果尝试如下:
instance Show (SomeValue v) where
show (Null) = "You have no value"
show (Justs v) = show (Justs v)
findKey key = foldr (\(k,v) acc -> if key == k then Justs v else acc ) Null
它进入一个无休止的循环(有点)。我认为我通过使用deriving word 得到的默认实现有效,上面的代码有什么问题?它编译但它不打印任何东西。
我是否可以像这样打印值:(没有“Justs”)?
instance Show (SomeValue v) where
show (Null) = "You have no value"
show (Justs v) = show (v)
【问题讨论】:
-
@WillemVanOnsem 不一样。对于我的数据构造函数,我只有两个值,对于这两个值,我已经定义了 show 但它不打印任何内容,我什至尝试使用类型注释来读取,但它不起作用:)
-
当然它不打印任何东西,它陷入了无限循环。
-
除了使用
derivingword 之外的解决方案是什么?这么多问题的借口:(
标签: haskell