DengQN·一个普通程序员;
Haskell Type and TypeClass
2018-09-30 17:00 66
#类型#类#函数#接口#公共#不同#类比#实现#查看

类型

:t value

可以查看数据的类型,haskell是强类型语言

对于函数也是

例如:

fun :: [Char] -> [Char]

对于函数fun,参数就一定是char array,即是String(等价的)

类型类

类型类用于定义一个公共的接口

为各种不同的类型提供一组公共特性集。

类似于接口interface:

class typeclassname a where
    funtionname :: a -> a -> returntype

可以类比于java的:

interface<T,R> name{
    R funtion(T t,T t);
}

然后实现类型类的实例类型

instance typeclassname type where
    funtionname arg arg = return

例如:

class EqualClass a where
    equalFun :: a->a->Bool


instance EqualClass Bool where
    equalFun True True = True
    equalFun True False = False
    equalFun False False = True
    equalFun _ _ = False
    --同或

类比java:

class interfaceImpl<Bool,Bool> implement interface{
    Bool funtion(Bool l, Bool r){
        retutn !(l^r);
        //同或
    }
}

所以,类型类更像一种接口,可以实现出不同类的情况下的函数行为