`CmpSymbol` treats "\0" as bigger than expected
Summary
Compared to behaviour of e.g. Ord String
or Ord ByteString
, CmpSymbol
treats string "\0"
as bigger than e.g. "a"
, even though null character appears as first in ASCII ordering.
Steps to reproduce
$ ghci
GHCi, version 8.10.1: https://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /home/matej/.ghci
λ> import GHC.TypeLits
λ> :set -XDataKinds
λ> :k! CmpSymbol "a" "\0"
CmpSymbol "a" "\0" :: Ordering
= 'LT
λ> compare "a" "\0"
GT
Same with CmpSymbol "a" "\NUL"
.
Expected behavior
I expected CmpSymbol "a" "\0"
to return 'GT
, which is what is returned with characters immediately following
\0
in ASCII.
Environment
- GHC version used: 8.10.1
Optional:
- Operating System:
Arch Linux
- System Architecture:
x64