定义类型类

原创 2015年07月07日 10:17:17
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



版权声明:本文为博主原创文章,未经博主允许不得转载。

(C++)类与对象2-1 Point类的定义

Problem Description 通过本题目的练习可以掌握类与对象的定义; 设计一个点类Point,它具有私有数据成员x(横坐标)、y(纵坐标);公有成员函数:SetPoint(int,...
  • jinzk123
  • jinzk123
  • 2016年09月21日 15:01
  • 2605

在类中使用typedef定义新类型

在类中使用typedef定义新类型,其有效范围为定义起始位置到类右大括号。 任何数据和函数都不能在类外(大括号外)使用该新类型。 在纯虚类中使用比较方便,可以限制新类型的作用范围,防止与其他typ...
  • tt525519836
  • tt525519836
  • 2013年07月03日 22:32
  • 3477

警告:数据定义时没有类型或存储类

1.警告:数据定义时没有类型或存储类 int talk_with_server(int); int talk_with_server_v1(int); 解决:加上存储类型即可 i...
  • liumingkong
  • liumingkong
  • 2011年11月30日 17:25
  • 928

Object类中定义实现的方法

Object是所有类的父类,任何类都默认继承Object。
  • liyue199512
  • liyue199512
  • 2016年07月29日 16:35
  • 306

javascript基础篇--function类型(上)

在js中,function类型实际上是对象,每个函数都是function类型的一个实例。而且与其他引用类型一样具有属性和方法。   声明 1普通方式 Function sum(num1,num...
  • han_yankun2009
  • han_yankun2009
  • 2014年04月24日 21:38
  • 2011

C++中如何定义string类?

string类使用起来比较方便,在本课程的开始我们就学习了string类。之所以那么早就学习string,就是希望大家能够用string代替c风格的字符串。目前为止,我们学习了如何定义类,以及如何为类...
  • lidiya007
  • lidiya007
  • 2016年11月15日 17:22
  • 598

第19条:接口只用于定义类型

术语:         当类实现接口时,接口就充当可以引用这个类的实
  • u014723123
  • u014723123
  • 2014年07月06日 10:33
  • 623

已知String类定义,如何实现其函数体

String类定义如下:class String { public: String(const char *str=NULL); //通用构造函数 String(con...
  • In_Sunshine
  • In_Sunshine
  • 2016年08月04日 22:10
  • 1356

C++类型重定义错误的解决方法

当我们想在.h声明中定义成员变量,有时会报类型重定义错误,如果不是工程中真的重复定义了多个同名类,那么多半是没有给该类的头文件加条件指示符#ifndef,条件指示符#ifndef 最主要的目的就是防止...
  • u012043391
  • u012043391
  • 2017年01月20日 15:50
  • 2192

C++ 类中不同类型成员函数的定义

C++类中各种不同类型成员根据是否static 、是否const类型的初始化方法不尽相同,写代码时经常搞乱,网上搜了一下资料,全部总结一下。一、例子 [cpp] view plain copy...
  • Evelyn_LiuZhen
  • Evelyn_LiuZhen
  • 2016年08月07日 17:18
  • 347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定义类型类
举报原因:
原因补充:

(最多只允许输入30个字)