Ala*_*lan 1 haskell types ghci
我正在按照教程创建一个新类型.这是我的代码:
data Shape = Circle Float Float Float | Rectangle Float Float Float Float
Run Code Online (Sandbox Code Playgroud)
当我用ghci加载文件时,我键入:
Circle 10 20 5
Run Code Online (Sandbox Code Playgroud)
它打印这个:
<interactive>:29:1:
No instance for (Show Shape) arising from a use of ‘print’
In a stmt of an interactive GHCi command: print it
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
Tho*_*son 10
该show函数有类型:
show :: Show a => a -> String
Run Code Online (Sandbox Code Playgroud)
这意味着它只适用于具有Show实例的事物.您可以Show通过手动定义实例或让编译器自动派生实例来使您的类型成为类的实例:
data Shape = Circle Float Float Float | Rectangle Float Float Float Float
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
要么
instance Show Shape where
show (Circle a b c) = "Circle " ++ show a ++ " " ++ show b ++ " " ++ show c
show (Rectangle a b c d) = ...
Run Code Online (Sandbox Code Playgroud)