Как я могу сохранить свой пакет на Haskell в LTS без MissingH? - PullRequest
0 голосов
/ 10 октября 2018

Начиная с GHC 8.6.1, MissingH больше не включается в Stackage LTS nightly, по-видимому, из-за несовместимости между MissingH и Control.Monad.Fail.MonadFail.В частности, если я попытаюсь собрать моего пакета против распознавателя 8.6.1 и вручную добавить MissingH (из текущей ветки, поскольку версия Hackage отклонена из-за ограничения на базу), я получу:

/home/travis/build/orome/crypto-enigma-hs/.stack-work/downloaded/cfhWTjyPvK7n/src/Data/Compression/Inflate.hs:189:14: error:
    • No instance for (Control.Monad.Fail.MonadFail InfM)
        arising from a do statement
        with the failable pattern ‘[x]’
    • In a stmt of a 'do' block: [x] <- get_bits 1
      In the expression:
        do [x] <- get_bits 1
           return x
      In an equation for ‘get_bit’:
          get_bit
            = do [x] <- get_bits 1
                 return x
    |
189 | get_bit = do [x] <- get_bits 1
    |              ^^^^^^^^^^^^^^^^^

Я не уверен, как поступить.Я ожидаю, что многие пакеты зависят от MissingH и будут выгнаны из LTS, если он не будет обновлен.

Существуют ли альтернативы MissingH, которые я мог бы использовать.MissingH активно поддерживается, и я должен ожидать, что это будет исправлено в ближайшее время?


Я не уверен, какую часть MissingH я использую ( как мне это выяснить в Haskell? ; я думаю Data.String.Utils, по крайней мере оттуда), но мой импорт (по всем файлам) выглядит следующим образом:

import           Control.Arrow
import           Control.Exception      (assert)
import           Control.Monad          (unless)
import           Control.Monad.Except
import           Control.Monad.Zip
import           Control.Applicative
import           Data.Monoid
import           Data.List
import           Data.List.Split        (splitOn)
import qualified Data.Map               as M
import           Data.Maybe
import           Text.Printf            (printf)
import           Data.Char              (toUpper)
import           Data.String.Utils      (replace)

import Data.Char (chr, ord)
import Data.List (sort)

import Control.Applicative
import Data.Monoid
import Data.Char
import Data.List
import Data.List.Split          (chunksOf)
import Data.String.Utils        (replace)
import Text.Printf              (printf)

Есть ли обратно совместимая замена для частей MissingH, которые япользуюсь?

...