22 lines
612 B
Haskell
22 lines
612 B
Haskell
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
|
|
--
|
|
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
module Utils.NTop
|
|
( NTop(..)
|
|
) where
|
|
|
|
import ClassyPrelude
|
|
|
|
-- | treat Nothing as Top for Ord (Maybe a); default implementation treats Nothing as bottom
|
|
newtype NTop a = NTop { nBot :: a }
|
|
deriving (Read, Show, Generic)
|
|
deriving newtype (Eq)
|
|
|
|
instance Ord a => Ord (NTop (Maybe a)) where
|
|
compare (NTop Nothing) (NTop Nothing) = EQ
|
|
compare (NTop Nothing) _ = GT
|
|
compare _ (NTop Nothing) = LT
|
|
compare (NTop (Just x)) (NTop (Just y)) = compare x y
|
|
|