Class 类型类w/`min`?
给定Class 类型类w/`min`?,class,haskell,Class,Haskell,给定Ord类型类别: Prelude> :i Ord class Eq a => Ord a where compare :: a -> a -> Ordering (<) :: a -> a -> Bool (<=) :: a -> a -> Bool (>) :: a -> a -> Bool (>=) :: a -> a -> Bool max :: a -> a
Ord
类型类别:
Prelude> :i Ord
class Eq a => Ord a where
compare :: a -> a -> Ordering
(<) :: a -> a -> Bool
(<=) :: a -> a -> Bool
(>) :: a -> a -> Bool
(>=) :: a -> a -> Bool
max :: a -> a -> a
min :: a -> a -> a
前奏曲>:一个单词
类Eq a=>Ord a,其中
比较::a->a->排序
(a)->Bool
(a)->Bool
(>)::a->a->Bool
(>=)::a->a->Bool
max::a->a->a
min::a->a->a
是否有类型类为给定类型提供min:a
字段/函数
例如:
min::Int
将输出您要查找的最小Int
值。其中包含。您要查找的是typeclass。谢谢(如果可以,将接受)!我看到这个类型类有函数:minBound
和maxBound
。是否有step
函数,即如何将一个元素从minBound
增加到maxBound
,在另一个类型类中可用?@KevinMeredith,它是Enum
的一部分,名为success
(essor)@KevinMeredith但请注意,iterate suc minBound
不能保证命中给定类型的所有可能值。另请参阅该包,该包专门用于迭代给定类型的所有可能值。谢谢,@DanielWagner。请您给我解释一下为什么它是“不能保证命中给定类型的所有可能值?”@KevinMeredithsucc(1.4::Double)
给出了2.4
。现在Double
不是Bounded
的成员,因此没有minBound
。但是如果我们接受Enum Double
的行为作为有效的Enum
实例(老实说,我对此有点怀疑),那么suc
可以“跳过”“可能的值,因此没有理由期望iterate such minBound
会在Enum
和Bounded
中为任意类型命中所有内容。也就是说,前奏中Bounded
的唯一实例是Word、Ordering、Int、Char、Bool和()(及其元组),它们的行为应该是合理的。