purescript-0.10.4: examples/passing/SolvingCompareSymbol.purs
module Main where
import Prelude
import Control.Monad.Eff.Console (log)
import Type.Data.Symbol (SProxy(..), class CompareSymbol, compareSymbol)
import Type.Data.Ordering (OProxy(..), kind Ordering, LT, EQ, GT, reflectOrdering)
symA :: SProxy "A"
symA = SProxy
symB :: SProxy "B"
symB = SProxy
egLT :: OProxy LT
egLT = compareSymbol symA symB
egEQ :: OProxy EQ
egEQ = compareSymbol symA symA
egGT :: OProxy GT
egGT = compareSymbol 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"