Haskell笔记 数据类型

Haskell笔记 数据类型

查看数据类型

:: 读作"它的类型为"

:t 'a' -- 'a' :: Char
:t 123 -- 123 :: Num p => p
:t True -- True "" Bool
:t "hello" -- [Char]
:t ('a', True) -- ('a', True) :: (Char, Bool)
:t (1, True) -- (1, True) :: Num a => (a, Bool)
-- 函数的类型
test x = x + 1 -- test :: Num a => a -> a
testc x = 'a':x -- testc :: [Char] -> [Char]
testl x y = 'a':x++y -- testl :: [Char] -> [Char] -> [Char]

常见数据类型

关键字名称注意
Int整型-263~2263-1
Integer整型一般是无界的
Float单精度浮点数
Double双精度浮点数
Bool布尔型True, False
Char字符型
元组它的类型取决于其中项的类型和数目

类型变量

代表任意类型

-- 下面的函数可以处理列表, 无论列表中装有的数据是什么类型
-- a, b代表任意类型
:t head -- head :: [a] -> [a]
:t fst -- fst :: (a, b) -> a

类类型(typeclass)

类类型是定义行为的入口, 是一组函数的集合

-- Eq类型, 用于判断两个变量是否相等
:t (==) -- (==) :: Eq a => a -> a -> Bool
:t (/=) -- (/=) :: Eq a => a -> a -> Bool
-- Ord类型, 用于比较两个变量大小
:t (>) -- (>) :: Ord a => a -> a -> Bool
:t (<) -- (<) :: Ord a => a -> a -> Bool
:t (>=) -- (>=) :: Ord a => a -> a -> Bool
:t (<=) -- (<=) :: Ord a => a -> a -> Bool
-- Show类型, 将实例转换为字符串
-- 常用函数为show
show 1 -- "1"
:t show -- show :: Show a => a -> String
-- Read类型, 将字符串转换为其他类型
read "1" + 1 -- 2
read "1" :: Float -- 1.0
read "[1, 2, 3, 4, 5]" :: Int
:t read -- read :: Read a => String -> a

Enum类类型

Enum的每个值都有前驱(succ)和后继(pred)

其包括 Bool, Char Ordering, Int, Integer, Float, Double

['a'..'d'] -- [a, b, c, d]
[1..3] -- [1, 2, 3]
succ 1 -- 2
pred 'c' -- 'b'
succ False -- True

Bounded类型类

Bounded类型类的实例类型都有一个上限(maxBound)和一个下限(minBound)

maxBound :: Int -- 9223372036854775807
maxBound :: Char -- '\1114111'
minBound :: Bool -- False
maxBound :: (Int, Bool) -- (9223372036854775807,True)

Num类型类

标识数值的类型类

包括Int, Integer, Float, Double

Floatle类型类

包括Float和Double

Integeral类型类

包含所有整数类型(Int, Integer)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值