    -- 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