Change:
<del> diff -aur serious/sad-2.3-25/Alice/Core/Base.hs sad-2.3-25/Alice/Core/Base.hs --- serious/sad-2.3-25/Alice/Core/Base.hs	2008-03-29 18:24:12.000000000 +0000 +++ sad-2.3-25/Alice/Core/Base.hs	2015-11-27 06:38:28.740840823 +0000 @@ -21,6 +21,7 @@ module Alice.Core.Base where import Control.Monad +import Control.Applicative import Data.IORef import Data.List import Data.Time @@ -61,10 +62,21 @@ type CRMC a b = IORef RState -> IO a -> (b -> IO a) -> IO a newtype CRM b = CRM { runCRM :: forall a . CRMC a b } +instance Functor CRM where +  fmap = liftM + +instance Applicative CRM where +  pure = return +  (<*>) = ap + instance Monad CRM where return r  = CRM $  _ _ k -> k r m >>= n   = CRM $  s z k -> runCRM m s z ( r -> runCRM (n r) s z k) +instance Alternative CRM where +  (<|>) = mplus +  empty = mzero + instance MonadPlus CRM where mzero     = CRM $  _ z _ -> z mplus m n = CRM $  s z k -> runCRM m s (runCRM n s z k) k diff -aur serious/sad-2.3-25/Alice/Core/Thesis.hs sad-2.3-25/Alice/Core/Thesis.hs --- serious/sad-2.3-25/Alice/Core/Thesis.hs	2008-03-05 13:10:50.000000000 +0000 +++ sad-2.3-25/Alice/Core/Thesis.hs	2015-11-27 06:35:08.311015166 +0000 @@ -21,6 +21,7 @@ module Alice.Core.Thesis (thesis) where import Control.Monad +import Control.Applicative import Data.List import Data.Maybe @@ -126,11 +127,22 @@ newtype TM res = TM { runTM :: [String] -> [([String], res)] } +instance Functor TM where +  fmap = liftM + +instance Applicative TM where +  pure = return +  (<*>) = ap + instance Monad TM where return r  = TM $  s -> [(s, r)] m >>= k   = TM $  s -> concatMap apply (runTM m s) where apply (s, r) = runTM (k r) s +instance Alternative TM where +  (<|>) = mplus +  empty = mzero + instance MonadPlus TM where mzero     = TM $  _ -> [] mplus m k = TM $  s -> runTM m s ++ runTM k s diff -aur serious/sad-2.3-25/Alice/Export/Base.hs sad-2.3-25/Alice/Export/Base.hs --- serious/sad-2.3-25/Alice/Export/Base.hs	2008-03-09 09:36:39.000000000 +0000 +++ sad-2.3-25/Alice/Export/Base.hs	2015-11-27 06:32:47.782738005 +0000 @@ -39,7 +39,7 @@ -- Database reader readPrDB :: String -> IO [Prover] -readPrDB file = do  inp <- catch (readFile file) $ die . ioeGetErrorString +readPrDB file = do  inp <- catchIOError (readFile file) $ die . ioeGetErrorString let dws = dropWhile isSpace cln = reverse . dws . reverse . dws diff -aur serious/sad-2.3-25/Alice/Export/Prover.hs sad-2.3-25/Alice/Export/Prover.hs --- serious/sad-2.3-25/Alice/Export/Prover.hs	2008-03-09 09:36:39.000000000 +0000 +++ sad-2.3-25/Alice/Export/Prover.hs	2015-11-27 06:36:47.632919161 +0000 @@ -60,7 +60,7 @@ when (askIB IBPdmp False ins) $ putStrLn tsk seq (length tsk) $ return $ -        do  (wh,rh,eh,ph) <- catch run +        do  (wh,rh,eh,ph) <- catchIOError run $  e -> die $ "run error: " ++ ioeGetErrorString e hPutStrLn wh tsk ; hClose wh diff -aur serious/sad-2.3-25/Alice/ForTheL/Base.hs sad-2.3-25/Alice/ForTheL/Base.hs --- serious/sad-2.3-25/Alice/ForTheL/Base.hs	2008-03-09 09:36:39.000000000 +0000 +++ sad-2.3-25/Alice/ForTheL/Base.hs	2015-11-27 06:31:51.921230428 +0000 @@ -226,7 +226,7 @@ varlist = do  vs <- chainEx (char ',') var nodups vs ; return vs -nodups vs = unless (null $ dups vs) $ +nodups vs = unless ((null :: [a] -> Bool) $ dups vs) $ fail $ "duplicate names: " ++ show vs hidden  = askPS psOffs >>=  n -> return ('h':show n) diff -aur serious/sad-2.3-25/Alice/Import/Reader.hs sad-2.3-25/Alice/Import/Reader.hs --- serious/sad-2.3-25/Alice/Import/Reader.hs	2008-03-09 09:36:39.000000000 +0000 +++ sad-2.3-25/Alice/Import/Reader.hs	2015-11-27 06:36:41.818866167 +0000 @@ -24,7 +24,7 @@ import Control.Monad import System.IO import System.IO.Error -import System.Exit +import System.Exit hiding (die) import Alice.Data.Text import Alice.Data.Instr @@ -44,7 +44,7 @@ readInit ""   = return [] readInit file = -  do  input <- catch (readFile file) $ die file . ioeGetErrorString +  do  input <- catchIOError (readFile file) $ die file . ioeGetErrorString let tkn = tokenize input ; ips = initPS () inp = ips { psRest = tkn, psFile = file, psLang = "Init" } liftM fst $ fireLPM instf inp @@ -74,7 +74,7 @@ reader lb fs (ps:ss) [TI (InStr ISfile file)] = do  let gfl = if null file  then hGetContents stdin else readFile file -      input <- catch gfl $ die file . ioeGetErrorString +      input <- catchIOError gfl $ die file . ioeGetErrorString let tkn = tokenize input ips = initPS $ (psProp ps) { tvr_expr = [] } sps = ips { psRest = tkn, psFile = file, psOffs = psOffs ps } diff -aur serious/sad-2.3-25/Alice/Parser/Base.hs sad-2.3-25/Alice/Parser/Base.hs --- serious/sad-2.3-25/Alice/Parser/Base.hs	2008-03-09 09:36:40.000000000 +0000 +++ sad-2.3-25/Alice/Parser/Base.hs	2015-11-27 06:14:28.616734527 +0000 @@ -20,6 +20,7 @@ module Alice.Parser.Base where +import Control.Applicative import Control.Monad import Data.List @@ -45,11 +46,22 @@ type CPMC a b c = (c -> CPMS a b) -> (String -> CPMS a b) -> CPMS a b newtype CPM a c = CPM { runCPM :: forall b . CPMC a b c } +instance Functor (CPM a) where +  fmap = liftM + +instance Applicative (CPM a) where +  pure = return +  (<*>) = ap + instance Monad (CPM a) where return r  = CPM $  k _ -> k r m >>= n   = CPM $  k l -> runCPM m ( b -> runCPM (n b) k l) l fail e    = CPM $  _ l -> l e +instance Alternative (CPM a) where +    (<|>) = mplus +    empty = mzero + instance MonadPlus (CPM a) where mzero     = CPM $  _ _ _ z -> z mplus m n = CPM $  k l s -> runCPM m k l s . runCPM n k l s diff -aur serious/sad-2.3-25/init.opt sad-2.3-25/init.opt --- serious/sad-2.3-25/init.opt	2007-10-11 15:25:45.000000000 +0000 +++ sad-2.3-25/init.opt	2015-11-27 07:23:41.372816854 +0000 @@ -1,6 +1,6 @@ # Alice init options -[library examples] -[provers provers/provers.dat] +[library @out@/examples] +[provers @out@/provers/provers.dat] [prover spass] [timelimit 3] [depthlimit 7] diff -aur serious/sad-2.3-25/provers/provers.dat sad-2.3-25/provers/provers.dat --- serious/sad-2.3-25/provers/provers.dat	2008-08-26 21:20:25.000000000 +0000 +++ sad-2.3-25/provers/provers.dat	2015-11-27 07:24:18.878169702 +0000 @@ -3,7 +3,7 @@ Pmoses LMoses Fmoses -Cprovers/moses +C@out@/provers/moses Yproved in Nfound unprovable in Utimeout in @@ -12,7 +12,7 @@ Pspass LSPASS Fdfg -Cprovers/SPASS -CNFOptSkolem=0 -PProblem=0 -PGiven=0 -Stdin -TimeLimit=%d +C@spass@/bin/SPASS -CNFOptSkolem=0 -PProblem=0 -PGiven=0 -Stdin -TimeLimit=%d YSPASS beiseite: Proof found. NSPASS beiseite: Completion found. USPASS beiseite: Ran out of time. </del>

Discussion:
There's two "sad" packages, with one being not used at-all top-level/all- in a text-editor (as of writing but beware this will lag, so open it locally) at this comment: at this what happened Should be just one We should just drop the old pkg's nix files after notifying the maintainer of the old package, but I'm opening this issue for discussion, because there might be more left to cleanup. Perhaps we should check if we have files in-tree that are no longer being referenced and do a prune of those files (and maybe check it in ci afterwards, or at least occasionally during hydra builds). <!-- Please @ people who are in the list of the offending package or module. If in doubt, check for whoever last touched something. --
The package of which I'm the maintainer has nothing to do with the other package, these are completely different packages. I am not using this application anymore, it is commented (and probably broken) since at least and , which were committed in July 2020. This is nearly 3 years ago. I'm not maintaining it anymore. So yes, let's remove it. I think deleting the folder and the commented reference in all- should remove all references to it.