From 652618742aa1dd10b1a53bb132a476a91f1dc3ba Mon Sep 17 00:00:00 2001 From: peb Date: Thu, 10 Jun 2004 14:37:43 +0000 Subject: *** empty log message *** --- src/GF/Data/Operations.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/GF/Data/Operations.hs') diff --git a/src/GF/Data/Operations.hs b/src/GF/Data/Operations.hs index f348b768f..9c374fe83 100644 --- a/src/GF/Data/Operations.hs +++ b/src/GF/Data/Operations.hs @@ -111,6 +111,17 @@ mapErr f xs = Ok (ys, unlines ss) (ys,ss) = ([y | Ok y <- fxs], [s | Bad s <- fxs]) fxs = map f xs +-- alternative variant, peb 9/6-04 +mapErrN :: Int -> (a -> Err b) -> [a] -> Err ([b], String) +mapErrN maxN f xs = Ok (ys, unlines (errHdr : ss2)) + where + (ys, ss) = ([y | Ok y <- fxs], [s | Bad s <- fxs]) + errHdr = show nss ++ " errors occured" ++ + if nss > maxN then ", showing the first " ++ show maxN else "" + ss2 = map ("* "++) $ take maxN ss + nss = length ss + fxs = map f xs + -- !! with the error monad (!?) :: [a] -> Int -> Err a xs !? i = foldr (const . return) (Bad "too few elements in list") $ drop i xs -- cgit v1.2.3