Кто-нибудь когда-нибудь составлял список импортов, необходимых для того, чтобы избежать «недостаточно полиморфных» определений в стандартных библиотеках Haskell?

Я уже довольно давно использую Haskell. Чем больше я им пользуюсь, тем больше влюбляюсь в язык. Я просто не могу поверить, что провел почти 15 лет своей жизни, используя другие языки.

Однако мне медленно, но неуклонно надоедают стандартные библиотеки Haskell. Больше всего меня раздражают определения «недостаточно полиморфные» ( Prelude.map, Control.Monad.forM_и т. д.). У меня есть много файлов с исходным кодом на Haskell, первые строки которых выглядят так

{-# LANGUAGE NoMonomorphismRestriction #-}

module Whatever where

import Control.Monad.Error hiding (forM_, mapM_)
import Control.Monad.State hiding (forM_, mapM_)
import Data.Foldable (forM_, mapM_)

{- ... -}

. Чтобы избежать постоянного поиска определений, которые я должен скрыть, я хотел бы иметь один или небольшое количество файлов с исходным кодом, которые обертывают это импортшаблонов в управляемые единицы.

Итак...

  1. Кто-нибудь еще пытался сделать это раньше?
  2. Если ответ на предыдущий вопрос «Да», опубликовали ли они получившиеся файлы исходного кода с шаблонной оболочкой?
24
задан pyon 18 June 2012 в 01:22
поделиться