module Data.Tensort.Subalgorithms.Magicsort ( magicsort, ) where import Data.Tensort.Subalgorithms.Bogosort (bogosort) import Data.Tensort.Subalgorithms.Permutationsort (permutationsort) import Data.Tensort.Utils.Types (Sortable) magicsort :: Sortable -> Sortable magicsort :: Sortable -> Sortable magicsort Sortable xs = do let result1 :: Sortable result1 = Sortable -> Sortable permutationsort Sortable xs let result2 :: Sortable result2 = Sortable -> Sortable bogosort Sortable xs if Sortable result1 Sortable -> Sortable -> Bool forall a. Eq a => a -> a -> Bool == Sortable result2 then Sortable result1 else Sortable -> Sortable magicsort Sortable xs