Sort using a custom comparator: Difference between revisions

m
→‎{{header|Haskell}}: Applied Ormolu, tidied
m (→‎{{header|Haskell}}: Applied Ormolu, tidied)
Line 1,726:
=={{header|Haskell}}==
{{works with|GHC}}
<lang haskell>import Data.OrdChar (comparingtoLower)
import Data.Char (toLower)
import Data.List (sortBy)
import Data.CharOrd (toLowercomparing)
 
-------------------- CUSTOM COMPARATORS ------------------
 
lengthThenAZ :: String -> String -> Ordering
lengthThenAZ = comparing length `mappend`<> comparing (fmap toLower)
 
descLengthThenAZ :: String -> String -> Ordering
descLengthThenAZ = flip (comparing length) `mappend` comparing (fmap toLower)
flip (comparing length)
<> comparing (fmap toLower)
 
--------------------------- TEST -------------------------
main :: IO ()
main =
mapM_
putStrLn
( fmap
unlines
( [sortBy] <*> [lengthThenAZ, descLengthThenAZ] <*>
[["Here", "are", "some", "sample", "strings",<*> "to",[ [ "beHere", "sorted"]]))
"are",
</lang>
"some",
 
"sample",
"strings",
"to",
"be",
"sorted"
]
]
)
)</lang>
{{Out}}
<pre>be
9,655

edits