haskell 中的有序和复杂
ord and complex in haskell
我有这个功能:
function x y z w = x >= y && z == w
为了定义类型我想到了这个:
function:: Ord a=> a-> a->a->a-> Bool
问题是我没有考虑复数。我如何定义它包括它们?
我相信答案是你不能,或者不应该。
Ord
是trichotomy的公理,复数显然不满足。所以我认为 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
实例。
参见:
我有这个功能:
function x y z w = x >= y && z == w
为了定义类型我想到了这个:
function:: Ord a=> a-> a->a->a-> Bool
问题是我没有考虑复数。我如何定义它包括它们?
我相信答案是你不能,或者不应该。
Ord
是trichotomy的公理,复数显然不满足。所以我认为 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
实例。
参见: