1. Зачем одинаковые функции есть в prelude и Data.List к примеру? 2. Могут ли эти функции работать с разными типами. Пример в Prelude a в Data.List [a] (это выдумка).
Прелюда это же традиционный компромисс между удобством и гибкостью. Удобно, что не нужно писать import, но с другой стороны, если хочется свою функцию с таким же именем, будут конфликты. Представьте, вы определили свой тип контейнера и хотите чтобы была zipWith для него. Что делать?..
прелюда не объявляет "идентичные функции", она их реэкспортирует
Так я могу же сделать import Prelude hiding (zipWith) или qualified импорт вроде был. A.zipWith B.zipWith условно
Придётся делать и hiding и qualified import: две строчки. А сейчас нужна одна... (qualified import).
Если сильно что-то бесит в стандартном прелюде то иногда можно глянуть на альтернативные прелюды
Обсуждают сегодня