定义自定义数据类型的打印格式

时间:2016-10-24 13:05:08

标签: haskell

对于我正在进行的练习,我实现了与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的打印格式?

1 个答案:

答案 0 :(得分:4)

您可以在数据类型上使用deriving (Show)

data Optional a = Some a | None deriving (Show)

此外,您的Optional类型与Maybe基本相同,这是大多数库中使用的类型。

相关问题