-- Copyright 2020 United States Government as represented by the Administrator
-- of the National Aeronautics and Space Administration. All Rights Reserved.
--
-- Disclaimers
--
-- Licensed under the Apache License, Version 2.0 (the "License"); you may
-- not use this file except in compliance with the License. You may obtain a
-- copy of the License at
--
--      https://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-- License for the specific language governing permissions and limitations
-- under the License.
--
-- | A datatype representing the type of the results of processing input files.
module Command.Result
    ( Result (Success, Error)
    , isSuccess
    , isError
    )
  where

-- Internal imports
import Data.Location ( Location )

-- | Result of the global process
data Result a = Success
              | Error a String Location

-- | 'True' if the result is a success, 'False' otherwise.
isSuccess :: Result a -> Bool
isSuccess :: forall a. Result a -> Bool
isSuccess Result a
Success = Bool
True
isSuccess Result a
_       = Bool
False

-- | 'True' if the result is an error, 'False' otherwise.
isError :: Result a -> Bool
isError :: forall a. Result a -> Bool
isError = Bool -> Bool
not (Bool -> Bool) -> (Result a -> Bool) -> Result a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Result a -> Bool
forall a. Result a -> Bool
isSuccess