2017-10-09 83 views
2

我讀書的時候,我發現這種類型的函數elem這是什麼意思?公式一=> A - > [A] - >布爾

Eq a => a -> [a] -> Bool 

什麼是Eq a =>是什麼意思?

+0

大廈直覺:如果是一個東西可以進行比較,然後給出一個與之相比較的列表,並且函數名稱是elem(element),通常可以猜測fn從類型簽名和名稱中做了什麼。 – Carbon

回答

7

Eq a是一個所謂的類約束。這意味着代替a的類型需要實現Eq類型類型。

在像Java這樣的編程語言中,這就像實現接口一樣。

您可能已經猜到Eq提供了功能==/=。 如果你有一個以上的約束類型簽名看起來像

fun :: (Ord a, Bounded a) => ... 

看什麼類型類提供了你可以看看上hackage文件或運行:info Ord內GHCI