Add a kind annotation on Graph'
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 22 Aug 2011 07:47:05 +0000 (08:47 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 22 Aug 2011 07:47:05 +0000 (08:47 +0100)
  data Graph' block (n :: * -> * -> *) e x where
    GNil  :: Graph' block n O O
    GUnit :: block n O O -> Graph' block n O O
    GMany :: MaybeO e (block n O C)

We want the kind annotation so we can get the the right kind for
Graph' without looking at its *uses*, as Haskell dictates (Report
section 4.6), and (now that we are extending the kind system) GHC is
going to do.

Previously GHC was a bit more forgiving, in a non-standard way.

src/Compiler/Hoopl/Graph.hs

index dffe302..27c00ea 100644 (file)
@@ -57,7 +57,7 @@ newtype Body' block n = Body (LabelMap (block n C C))
 -- A graph open at the entry has a single, distinguished, anonymous entry point;
 -- if a graph is closed at the entry, its entry point(s) are supplied by a context.
 type Graph = Graph' Block
-data Graph' block n e x where
+data Graph' block (n :: * -> * -> *) e x where
   GNil  :: Graph' block n O O
   GUnit :: block n O O -> Graph' block n O O
   GMany :: MaybeO e (block n O C)