对于我正在进行的练习,我实现了与Maybe
类似的数据类型:
type Some a = a
data Optional a = Some a | None
一个功能:
safeRoot :: Double -> Optional Double
safeRoot x =
if x >= 0
then Some (sqrt x)
else None
但是,如果我尝试从ghci运行这样的函数:
safeRoot 4
我明白了:
No instance for (Show (Optional Double))
arising from a use of ‘print’
In a stmt of an interactive GHCi command: print it
那么如何定义Optional
的打印格式?
答案 0 :(得分:4)
您可以在数据类型上使用deriving (Show)
:
data Optional a = Some a | None deriving (Show)
此外,您的Optional
类型与Maybe
基本相同,这是大多数库中使用的类型。