Fix bitrotted gc nofib code.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Wed, 10 Sep 2014 02:37:39 +0000 (19:37 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Wed, 10 Sep 2014 02:38:06 +0000 (19:38 -0700)
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
gc/fibheaps/Main.lhs
gc/happy/LALR.lhs
gc/happy/ParseMonad.lhs
gc/happy/ProduceCode.lhs
gc/happy/happy.lhs

index 452ae6e..245335d 100644 (file)
@@ -50,6 +50,7 @@ first understand binomial queues.  See, for example, David King's
 "Functional Binomial Queues" from the last Glasgow workshop.
 
 > -- partain
+>{-# LANGUAGE FlexibleContexts #-}
 >module Main (main) where
 >import Data.Array
 >import System.Environment
index f8610fb..08a99b3 100644 (file)
@@ -5,6 +5,7 @@ Generation of LALR parsing tables.
 (c) 1997-2001 Simon Marlow
 -----------------------------------------------------------------------------
 
+> {-# LANGUAGE FlexibleContexts #-}
 > module LALR
 >      (genActionTable, genGotoTable, genLR0items, precalcClosure0,
 >       propLookaheads, calcLookaheads, mergeLookaheadInfo, countConflicts,
index 9e576a5..4e29e9e 100644 (file)
@@ -5,6 +5,7 @@ The parser monad.
 -----------------------------------------------------------------------------
 
 > module ParseMonad where
+> import Control.Monad(ap)
 
 > data ParseResult a = OkP a | FailP String
 > newtype P a = P (String -> Int -> ParseResult a)
@@ -13,6 +14,17 @@ The parser monad.
 > lineP :: P Int
 > lineP = P $ \_ l -> OkP l
 
+> instance Functor ParseResult where
+>       fmap f (OkP a) = OkP (f a)
+>       fmap f (FailP e) = FailP e
+
+> instance Functor P where
+>       fmap f m = P $ \s l -> fmap f (runP m s l)
+
+> instance Applicative P where
+>       pure = return
+>       (<*>) = ap
+
 > instance Monad P where
 >      return m = P $ \ _ _ -> OkP m
 >      m >>= k =  P $ \s l -> case runP m s l of
index cd1980d..0c0dcc5 100644 (file)
@@ -4,6 +4,7 @@ The code generator.
 (c) 1993-2001 Andy Gill, Simon Marlow
 -----------------------------------------------------------------------------
 
+> {-# LANGUAGE FlexibleContexts #-}
 > module ProduceCode (produceParser) where
 
 > import Paths_happy           ( version )
index 149868d..2d8021d 100644 (file)
@@ -25,7 +25,7 @@ Path settings auto-generated by Cabal:
 > import System.Console.GetOpt
 > import Control.Monad ( liftM )
 > import System.Environment
-> import System.Exit
+> import System.Exit ( exitWith, ExitCode(ExitSuccess, ExitFailure) )
 > import Data.Char
 > import System.IO
 > import Data.Array( assocs, elems, (!) )