我有以下功能:`奧德A =>`或`民一=>'
which (x:xs) = worker x xs
worker x [] = x
worker x (y:ys)
| x > y = worker y ys
| otherwise = worker x ys
,我想知道我應該如何定義這些上述功能which
和worker
類型的簽名?
例如,下列哪種方法是最好的類型簽名的工人?
worker :: Num a => a -> [a] -> a
,
或
worker :: Ord a => a -> [a] -> a
?
我只是很困惑,並沒有得到這三個我應該選擇。我會很感激你的想法。謝謝。
你的功能是什麼*用於*?這是數字嗎?整型?任何可以訂購的東西? – Gabe 2011-06-12 13:37:54
@Gabe輸出是一個數字(即'Float'或'Int'),因此上面的'>'符號。現在我只是不確定它應該是'Ord a => ...'還是'Num a => ...' 只是真的很困惑!感謝您的詢問,幫助我消除了列表中的第三個:-) – maclunian 2011-06-12 13:41:42
@maclunian:您可以在有訂單的任何東西上使用'>',而不僅僅是數字。這就是爲什麼使用'Ord'而不是'Num'的原因。 – sepp2k 2011-06-12 13:45:43