Haskell data Ordering = LT | GT | EQ GHC GHCi 20220207_lithos DerivingVia RankNTypes van Laarhoven lens