

Line 1: 
Line 1: 
−  Here we document code that looks like it should be valid Haskell98, but
 
−  isn't typeable without extensions:
 
   
−  <haskell>
 
−  f :: a > a
 
−  f x = g x
 
−  where
 
−   g :: a > a
 
−  g y = bind x y
 
− 
 
−  bind :: a > a > a
 
−  bind a b = a
 
−  </haskell>
 
− 
 
−  The above Haskell code is Haskell 98, rank1 types, but cannot be given a type signature. Try commenting out the type signature for g and everything will go wrong.
 
− 
 
−  In GHC making the type of f :: forall a . a > a, and adding fglasgowexts will make this code work. No such luck in Hugs.
 
− 
 
−  With pattern type annotations, however, the code works in both Hugs and GHC:
 
− 
 
−  <haskell>
 
−  f :: a > a
 
−  f (x :: a) = g x
 
−  where
 
−  g :: a > a
 
−  g y = bind x y
 
− 
 
−  bind :: a > a > a
 
−  bind a b = a
 
−  </haskell>
 
− 
 
−  [[Category:Proposals]]
 