packages feed

purescript-0.15.15: tests/purs/passing/SolvingAppendSymbol.purs

module Main where

import Prelude
import Effect.Console (log)
import Prim.Symbol (class Append)
import Type.Proxy (Proxy(..))
import Type.Data.Symbol (append, reflectSymbol) as Symbol

sym :: Proxy ""
sym = Proxy

symA :: Proxy "A"
symA = Proxy

symB :: Proxy "B"
symB = Proxy

egAB :: Proxy "AB"
egAB = Symbol.append symA symB

egBA :: Proxy "BA"
egBA = Symbol.append symB symA

egA' :: Proxy "A"
egA' = Symbol.append sym (Symbol.append symA sym)

main = do
  let gotAB = Symbol.reflectSymbol egAB == "AB"
      gotBA = Symbol.reflectSymbol egBA == "BA"
      gotA' = Symbol.reflectSymbol egA' == "A"
  when (not gotAB) $ log "Did not get AB"
  when (not gotBA) $ log "Did not get BA"
  when (not gotA') $ log "Did not get A"
  when (gotAB && gotBA && gotA') $ log "Done"