類型#
: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);
//同或
}
}
所以,類型類更像一種接口,可以實現出不同類的情況下的函數行為