haskell 中的有序和复杂

ord and complex in haskell

我有这个功能:

function x y z w = x >= y && z == w

为了定义类型我想到了这个:

function:: Ord a=> a-> a->a->a-> Bool

问题是我没有考虑复数。我如何定义它包括它们?

我相信答案是你不能,或者不应该。

Ordtrichotomy的公理,复数显然不满足。所以我认为 compare 不可能有完整的实现(尽管我可能会误解):

Prelude> :info Ord
class Eq a => Ord a where
  compare :: a -> a -> Ordering
  ...
Prelude> :info Ordering
data Ordering = LT | EQ | GT    -- Defined in ‘GHC.Types’

这解释了为什么没有人已经为您定义了一个 Ord 实例。

参见: