
#9637: Type level programming needs an error function -------------------------------------+------------------------------------- Reporter: augustss | Owner: Type: feature | Status: new request | Milestone: Priority: normal | Version: 7.8.3 Component: Compiler | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by augustss): Here's a real example: {{{#!hs type F_NoDups (t :: FieldSet) :: FieldSet = Assert "Type has duplicate labels:\n " (Not (F_HasDups t)) t type family Assert (msg :: Symbol) (a :: Bool) (b :: k) :: k where Assert msg True x = x Assert msg False x = Error (msg `ErrorAnd` x) }}} And here's a sample error message: {{{ RunMu.exe: Cortex: Cortex.Stem.Relation.Test.Typed:21:1: Type error: Type has duplicate labels: Cortex.Stem.Relation.Types.FS ("A" ::: String : "B" ::: Bool : "B" ::: Bool : "C" ::: () : Data.TypeLevel.Nil) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9637#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler