@@ -1,10 +1,22 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2−module Reporting.Result where
2+module Reporting.Result
4import Control.Monad.Except (Except, runExcept)
16import Control.Monad.Except (Except, runExcept)
18+import qualified Data.Bag as Bag
6import qualified Reporting.Annotation as A
19import qualified Reporting.Annotation as A
7−import qualified Reporting.Bag as Bag
8import qualified Reporting.Region as R
20import qualified Reporting.Region as R
@@ -41,12 +53,7 @@ ok value =
42throw :: (Monoid i) => R.Region -> e -> Result i w e a
54throw :: (Monoid i) => R.Region -> e -> Result i w e a
43throw region err =
55throw region err =
44− Result mempty Bag.empty (Err (Bag.singleton (A.A region err)))
56+ Result mempty Bag.empty (Err (Bag.one (A.A region err)))
47−throwMany :: (Monoid i) => [A.Located e] -> Result i w e a
49− Result mempty Bag.empty (Err (Bag.fromList errors))
52accumulate :: (Monoid i) => i -> a -> Result i w e a
59accumulate :: (Monoid i) => i -> a -> Result i w e a
@@ -56,7 +63,7 @@ accumulate info value =
57warn :: (Monoid i) => R.Region -> w -> a -> Result i w e a
64warn :: (Monoid i) => R.Region -> w -> a -> Result i w e a
58warn region warning a =
65warn region warning a =
59− Result mempty (Bag.singleton (A.A region warning)) (Ok a)
66+ Result mempty (Bag.one (A.A region warning)) (Ok a)
@@ -70,7 +77,7 @@ from f except =
72 Left errors ->
79 Left errors ->
73− throwMany (map (A.map f) errors)
80+ Result mempty Bag.empty (Err (Bag.fromList (A.map f) errors))
76mapError :: (e -> e') -> Result i w e a -> Result i w e' a
83mapError :: (e -> e') -> Result i w e a -> Result i w e' a
@@ -96,7 +103,7 @@ answerToEither onErr onOk answer =
96 Right (onOk value)
103 Right (onOk value)
98 Err errors ->
105 Err errors ->
99− Left (Bag.toList onErr errors)
106+ Left (map onErr (Bag.toList errors))
102oneToValue :: b -> (a -> b) -> One a -> b
109oneToValue :: b -> (a -> b) -> One a -> b