关闭

定义类型类

标签: classcolor
267人阅读 评论(0) 收藏 举报
分类:
data Color = Red|Blue|Green

class BasicEq a where
	isEqual :: a->a->Bool
	isEqual x y = not (isNotEqual x y)

	isNotEqual :: a->a->Bool
	isNotEqual x y = not (isEqual x y)

instance  BasicEq Bool where
	isEqual False False = True
	isEqual True True = True
	isEqual _ _ = False 

instance BasicEq Color where
    isEqual Red Red = True
    isEqual Blue Blue = True
    isEqual Green Green = True
    isEqual _ _ = True

定义类型类使用

class className xxx where

常用的函数show

其函数签名

*Main> :type show
show :: Show a => a -> String

可知它是类型类Show里的一个方法,方法签名如上

同理看看我们的自定义


*Main> :type isEqual
isEqual :: BasicEq a => a -> a -> Bool
*Main> 


使用时可以指定返回类型

*Main> (isEqual True False ):: Bool
False

指定输入类型

*Main> isEqual Blue (Blue::Color)
True



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:350920次
    • 积分:8014
    • 等级:
    • 排名:第2647名
    • 原创:433篇
    • 转载:276篇
    • 译文:0篇
    • 评论:14条
    文章分类
    最新评论