这是世界的一部分
语法
报告中明确指出,
section 3.10
.
是的,它被翻译成代码使用
enumFrom
等功能:
编辑问题:您显示的定义是
Enum
打字课。就在你链接的前奏曲中说:
class Enum a where
succ, pred :: a -> a
toEnum :: Int -> a
fromEnum :: a -> Int
enumFrom :: a -> [a] -- [n..]
enumFromThen :: a -> a -> [a] -- [n,n'..]
enumFromTo :: a -> a -> [a] -- [n..m]
enumFromThenTo :: a -> a -> a -> [a] -- [n,n'..m]
-- Minimal complete definition:
-- toEnum, fromEnum
-- _______ -- ____
-- NOTE: these default methods only make sense for types -- **** NB
-- that map injectively into Int using fromEnum
-- and toEnum.
succ = toEnum . (+1) . fromEnum
pred = toEnum . (subtract 1) . fromEnum
enumFrom x = map toEnum [fromEnum x ..]
enumFromTo x y = map toEnum [fromEnum x .. fromEnum y]
enumFromThen x y = map toEnum [fromEnum x, fromEnum y ..]
enumFromThenTo x y z =
map toEnum [fromEnum x, fromEnum y .. fromEnum z]
所以每种类型
a
就是
在里面
枚举
必须提供至少
toEnum :: Int -> a
和
fromEnum :: a -> Int
.如果它没有提供自己的定义,例如。
enumFromTo :: a -> a -> [a]
然后将使用其默认定义:
enumFromTo :: a -> a -> [a]
enumFromTo x y = map toEnum [fromEnum x .. fromEnum y ]
-- âaââaâ âaâ âaâ
-- âââIntâââââ âââIntâââââ
-- âInt->aâ ââââââââââ[Int]ââââââââââââ
-- ââââââââââââââââ[a]âââââââââââââââââââââ
还有
Int
类型本身有一个
具体的
定义在库中的某个地方定义,所以
enumFromTo
不用于
智力
因此,不存在恶性循环。