packages feed

fcf-base-0.1.0.0: test/Main.hs

{-# LANGUAGE AllowAmbiguousTypes, DataKinds, PolyKinds, ScopedTypeVariables, TemplateHaskell, TypeApplications, TypeFamilies, TypeOperators #-}

module Main where

import Data.Type.Bool (If)
import Data.Type.Equality (type (==))
import GHC.TypeNats (type (+))

import Fcf.Family (Eval)
import Fcf.Family.TH (applyFamily)
import Fcf.Base ()

equals :: forall a b. (a ~ b) => IO ()
equals = pure ()

main :: IO ()
main = do
  equals @(Eval $(applyFamily ''(+) [ [t|3|] , [t|4|] ])) @7
  equals @(Eval $(applyFamily ''If [ [t|'True|] , [t|Int|] , [t|()|] ])) @Int
  equals @(Eval $(applyFamily ''(==) [ [t|()|] , [t|Int|] ])) @'False