我有这个功能:
function x y z w = x >= y && z == w
为了定义我想到的类型:
function:: Ord a=> a-> a->a->a-> Bool
问题在于我没有考虑复杂的数字。我如何定义它包括它们?
答案 0 :(得分:5)
我相信答案是你不能或不应该。
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
个实例。
请参阅: