Типы явно различаются, но Haskell не допускает специальной перегрузки имен, поэтому вы можете выбрать только один lookup
для использования без префикса.
Типичным решением является импорт Data.Map
квалифицированных:
> import qualified Data.Map as Map
Тогда вы можете сказать
> lookup 1 [(1,2), (3,4)]
Just 2
> Map.lookup 1 Map.empty
Nothing
Обычно библиотеки Haskell либо избегают повторного использования имен из Prelude, либо повторно используют целую кучу из них. Data.Map
является одним из вторых, и авторы ожидают, что вы импортируете его квалифицированным.
[Изменить, чтобы включить комментарий ephemient]
Если вы хотите использовать Data.Map.lookup
без префикса, вы должны скрыть Prelude.lookup
, поскольку он неявно импортируется в противном случае:
import Prelude hiding (lookup)
import Data.Map (lookup)
Это немного странно, но может быть полезно, если вы используете Data.Map.lookup
всю связку, и все ваши структуры данных - это карты, а не списки.