Skip to content

forall not recognized in RULES

{-# LANGUAGE GADTs, TypeFamilies, TypeOperators
  -- , ScopedTypeVariables
   #-}
{-# OPTIONS_GHC -Wall -frewrite-rules #-}

-- ScopedTypeVariables works around a 6.10 bug.  The forall keyword is
-- supposed to be recognized in a RULES pragma, but it's not.
-- 
-- This bug was introduced between ghc 6.9.20080622 and 6.10.0.20081007.

-- | Mapping from all elements of @a@ to the results of some function
class HasTrie a where
    -- | Representation of trie with domain type @a@
    data (:->:) a :: * -> *
    -- Create the trie for the entire domain of a function
    trie   :: (a  ->  b) -> (a :->: b)
    -- | Convert a trie to a function, i.e., access a field of the trie
    untrie :: (a :->: b) -> (a  ->  b)

{-# RULES
"trie/untrie"   forall t. trie (untrie t) = t
"untrie/trie"   forall f. untrie (trie f) = f
 #-}
Trac metadata
Trac field Value
Version 6.11
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC conal
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information