【发布时间】:2014-08-10 03:20:55
【问题描述】:
所以基本上我一个月前已经学完了这一部分,我可以做更复杂的事情,但我仍然不明白什么时候在我的类型定义中需要“Ord”或“Eq”等。当我在网上查找它时,出于某种原因让我很困惑。
例如
my_min :: Ord a => a -> a -> a
my_min n1 n2 = if n1<n2 then n1 else n2
为什么需要Ord?你能举一个例子说明你什么时候也需要 Eq(一个非常简单的)?我需要一个非常清晰、基本的解释,说明您何时需要放置这些、要注意什么以及如何尽可能避免使用这些。
通常我只需要像“[Int] -> Int -> [Int]”这样的东西,所以我知道这个函数接受一个整数列表和一个整数,并返回一个整数列表。但是当它包括 Eq 或 Ord 我不知道。
我在关于查找两个列表的讲义中发现这个例子中的这个 Eq 类型是相同的,它是如何应用的?
identical :: Eq a =>[a]->[a]->Bool
identical [] [] = True
identical [] _ = False
identical _ [] = False
identical (h1:t1) (h2:t2) =
if h1==h2
then (identical t1 t2)
else False
谢谢。
【问题讨论】:
标签: haskell types polymorphism