Skip to content

nbt-0.7 is not compiling (use of 'fail' in Data/NBT.hs) #12

@DolphinTechCodes

Description

@DolphinTechCodes

I am trying to compile nbt-0.7 with ghc 8.8.3 (stac lts-16.1) and get the following error:

Preprocessing library for nbt-0.7..
nbt   > Building library for nbt-0.7..
nbt   > [1 of 1] Compiling Data.NBT
nbt   >          
nbt   > /tmp/stack-d638f12c11d32bcc/nbt-0.7/src/Data/NBT.hs:113:53: error:
nbt   >     • No instance for (MonadFail Data.Serialize.Put.PutM)
nbt   >         arising from a use of ‘fail’
nbt   >     • In the expression: fail "Attempted to write heterogeneous list"
nbt   >       In a case alternative:
nbt   >           x : xs
nbt   >             | all (\ e -> typeOf e == ty) xs -> return ty
nbt   >             | otherwise -> fail "Attempted to write heterogeneous list"
nbt   >             where
nbt   >                 ty = typeOf x
nbt   >       In a stmt of a 'do' block:
nbt   >         ty <- case elems ts of
nbt   >                 [] -> return EndType
nbt   >                 x : xs
nbt   >                   | all (\ e -> typeOf e == ty) xs -> return ty
nbt   >                   | otherwise -> fail "Attempted to write heterogeneous list"
nbt   >                   where
nbt   >                       ty = typeOf x
nbt   >     |    
nbt   > 113 |                  | otherwise                     -> fail "Attempted to write heterogeneous list"
nbt   >     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
nbt   >          

I tracked the problem down and fount that the new version of GHC has dropped the fail function for Monads. See the proposal. A suiting fix would be replacing fail with error as that was the default behaviour of the PutM monad instance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions