packages feed

purescript-0.12.0: tests/purs/passing/SolvingCompareSymbol.purs

module Main where

import Prelude
import Effect.Console (log)
import Prim.Symbol (class Compare)
import Prim.Ordering (kind Ordering, LT, EQ, GT)
import Type.Data.Symbol (SProxy(..))
import Type.Data.Symbol (compare) as Symbol
import Type.Data.Ordering (OProxy(..), reflectOrdering)

symA :: SProxy "A"
symA = SProxy

symB :: SProxy "B"
symB = SProxy

egLT :: OProxy LT
egLT = Symbol.compare symA symB

egEQ :: OProxy EQ
egEQ = Symbol.compare symA symA

egGT :: OProxy GT
egGT = Symbol.compare symB symA

main = do
  let gotLT = reflectOrdering egLT == LT
      gotEQ = reflectOrdering egEQ == EQ
      gotGT = reflectOrdering egGT == GT
  when (not gotLT) $ log "Did not get LT"
  when (not gotEQ) $ log "Did not get EQ"
  when (not gotGT) $ log "Did not get GT"
  when (gotLT && gotEQ && gotGT) $ log "Done"