module Data.Tensort.Utils.Check (isSorted) where import Data.Tensort.Utils.ComparisonFunctions (lessThanOrEqualBit, lessThanOrEqualRecord) import Data.Tensort.Utils.Types (Sortable (..)) isSorted :: Sortable -> Bool isSorted :: Sortable -> Bool isSorted (SortBit []) = Bool True isSorted (SortBit [Bit _]) = Bool True isSorted (SortBit (Bit x : Bit y : [Bit] remainingElements)) = Bit -> Bit -> Bool lessThanOrEqualBit Bit x Bit y Bool -> Bool -> Bool && Sortable -> Bool isSorted ([Bit] -> Sortable SortBit (Bit y Bit -> [Bit] -> [Bit] forall a. a -> [a] -> [a] : [Bit] remainingElements)) isSorted (SortRec []) = Bool True isSorted (SortRec [Record _]) = Bool True isSorted (SortRec (Record x : Record y : [Record] remainingElements)) = Record -> Record -> Bool lessThanOrEqualRecord Record x Record y Bool -> Bool -> Bool && Sortable -> Bool isSorted ([Record] -> Sortable SortRec (Record y Record -> [Record] -> [Record] forall a. a -> [a] -> [a] : [Record] remainingElements))