首先,请注意,我在网上查看(在堆栈溢出和Hoogle),看看我是否能找到这个话题的任何东西!
我一直在努力学习“学习你自己一个haskell”,有两件事我经常遇到,但我并不真正理解。=>和(Ord a)在几个重要功能中的使用。
例如:
max :: (Ord a) => a -> a -> a是否使用与(Ord a)相同的“订购”,如:
compareWith :: Int -> Ordering谢谢你花时间帮我解决这个(可能)简单的问题!
发布于 2017-02-08 12:03:39
=>符号用于在函数上构建类约束。在max示例中,这意味着a类型的所有参数都需要实现Ord类型。
考虑max的实现
max :: (Ord a) => a -> a -> a
max x y = if x < y then y else x我们所知道的关于x和y的唯一事情是,它们必须满足Ord类型。这反过来允许我们使用<函数进行比较,其签名是:
(<) :: Ord a => a -> a -> Bool如果要从Ord a的定义中省略max约束,那么它就不会编译,因为max的主体将无法使用比较函数。
发布于 2017-02-08 12:03:47
部件(Ord a) =>是类型约束,指示为序号类型(可以排序)。
您可以将max :: (Ord a) => a -> a -> a理解为:
如果a是序数类型,则"max“接受a类型的2个参数,并返回a类型。
https://stackoverflow.com/questions/42112451
复制相似问题