类型

haskell 复制代码
:t value

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

对于函数也是

例如:

haskell 复制代码
fun :: [Char] -> [Char]

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

类型类

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

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

类似于接口interface:

haskell 复制代码
class typeclassname a where
    funtionname :: a -> a -> returntype

可以类比于java的:

haskell 复制代码
interface<T,R> name{
    R funtion(T t,T t);
}

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

haskell 复制代码
instance typeclassname type where
    funtionname arg arg = return

例如:

haskell 复制代码
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:

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

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