diff --git a/compiler/cpp/src/generate/t_hs_generator.cc b/compiler/cpp/src/generate/t_hs_generator.cc
index 47d4faa..0743251 100644
--- a/compiler/cpp/src/generate/t_hs_generator.cc
+++ b/compiler/cpp/src/generate/t_hs_generator.cc
@@ -542,14 +542,14 @@
   string t = tmp("_t");
   string id = tmp("_id");
 
-  indent(out) << "read_" << sname << "_fields iprot rec = do" << endl;
+  indent(out) << "read_" << sname << "_fields iprot record = do" << endl;
   indent_up(); // do
 
   // Read beginning field marker
   indent(out) << "(_," << t <<","<<id<<") <- readFieldBegin iprot" << endl;
   // Check for field STOP marker and break
   indent(out) <<
-    "if " << t <<" == T_STOP then return rec else" << endl;
+    "if " << t <<" == T_STOP then return record else" << endl;
   indent_up(); // if
   indent(out) << "case " << id<<" of " << endl;
   indent_up(); // case
@@ -561,12 +561,12 @@
     indent(out) << "s <- ";
     generate_deserialize_field(out, *f_iter,str);
     out << endl;
-    indent(out) << "read_"<<sname<<"_fields iprot rec{f_"<<sname<<"_"<< decapitalize((*f_iter)->get_name()) <<"=Just s}" << endl;
+    indent(out) << "read_"<<sname<<"_fields iprot record{f_"<<sname<<"_"<< decapitalize((*f_iter)->get_name()) <<"=Just s}" << endl;
     out <<
       indent() << "else do" << endl;
     indent_up();
     indent(out) << "skip iprot "<< t << endl;
-    indent(out) << "read_"<<sname<<"_fields iprot rec" << endl;
+    indent(out) << "read_"<<sname<<"_fields iprot record" << endl;
     indent_down(); // -do
     indent_down(); // -if
   }
@@ -578,7 +578,7 @@
   indent_up();
   indent(out) << "skip iprot "<<t<< endl;
   indent(out) << "readFieldEnd iprot" << endl;
-  indent(out) << "read_"<<sname<<"_fields iprot rec" << endl;
+  indent(out) << "read_"<<sname<<"_fields iprot record" << endl;
   indent_down(); // -case
   indent_down(); // -if
   indent_down(); // -do
@@ -588,7 +588,7 @@
   indent(out) << "read_"<<sname<<" iprot = do" << endl;
   indent_up();
   indent(out) << "_ <- readStructBegin iprot" << endl;
-  indent(out) << "rec <- read_"<<sname<<"_fields iprot ("<<sname<<"{";
+  indent(out) << "record <- read_"<<sname<<"_fields iprot ("<<sname<<"{";
   bool first = true;
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     if(first)
@@ -599,7 +599,7 @@
   }
   out << "})" << endl;
   indent(out) << "readStructEnd iprot" << endl;
-  indent(out) << "return rec" << endl;
+  indent(out) << "return record" << endl;
   indent_down();
 }
 
@@ -612,7 +612,7 @@
   string f = tmp("_f");
 
   indent(out) <<
-    "write_"<<name<<" oprot rec = do" << endl;
+    "write_"<<name<<" oprot record = do" << endl;
   indent_up();
   indent(out) <<
     "writeStructBegin oprot \""<<name<<"\"" << endl;
@@ -620,7 +620,7 @@
     // Write field header
     string mname = (*f_iter)->get_name();
     indent(out) <<
-      "case f_" << name << "_" << mname << " rec of {Nothing -> return (); Just _v -> do" << endl;
+      "case f_" << name << "_" << mname << " record of {Nothing -> return (); Just _v -> do" << endl;
     indent_up();
     indent(out) << "writeFieldBegin oprot (\""<< (*f_iter)->get_name()<<"\","
                 <<type_to_enum((*f_iter)->get_type())<<","
@@ -949,7 +949,7 @@
   }
 
 
-  indent(f_service_) << "proc handler (iprot,oprot) (name,typ,seqid) = case name of" << endl;
+  indent(f_service_) << "proc_ handler (iprot,oprot) (name,typ,seqid) = case name of" << endl;
   indent_up();
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
     string fname = (*f_iter)->get_name();
@@ -957,7 +957,7 @@
   }
   indent(f_service_) << "_ -> ";
   if(tservice->get_extends() != NULL){
-    f_service_ << type_name(tservice->get_extends()) << ".proc handler (iprot,oprot) (name,typ,seqid)" << endl;
+    f_service_ << type_name(tservice->get_extends()) << ".proc_ handler (iprot,oprot) (name,typ,seqid)" << endl;
   } else {
     f_service_ << "do" << endl;
     indent_up();
@@ -978,7 +978,7 @@
 
   f_service_ <<
     indent() << "(name, typ, seqid) <- readMessageBegin iprot" << endl;
-  f_service_ << indent() << "proc handler (iprot,oprot) (name,typ,seqid)" << endl;
+  f_service_ << indent() << "proc_ handler (iprot,oprot) (name,typ,seqid)" << endl;
   indent(f_service_) << "return True" << endl;
   indent_down();
 
diff --git a/lib/hs/src/Thrift.hs b/lib/hs/src/Thrift.hs
index 71957c4..9b4d41e 100644
--- a/lib/hs/src/Thrift.hs
+++ b/lib/hs/src/Thrift.hs
@@ -90,27 +90,27 @@
 readAppExn :: (Protocol p, Transport t) => p t -> IO AppExn
 readAppExn pt = do
     _ <- readStructBegin pt
-    rec <- readAppExnFields pt (AppExn {ae_type = undefined, ae_message = undefined})
+    record <- readAppExnFields pt (AppExn {ae_type = undefined, ae_message = undefined})
     readStructEnd pt
-    return rec
+    return record
 
 readAppExnFields :: forall (a :: * -> *) t. (Protocol a, Transport t) => a t -> AppExn -> IO AppExn 
-readAppExnFields pt rec = do
+readAppExnFields pt record = do
     (_, ft, tag) <- readFieldBegin pt
     if ft == T_STOP
-        then return rec
+        then return record
         else case tag of
                  1 -> if ft == T_STRING then
                           do s <- readString pt
-                             readAppExnFields pt rec{ae_message = s}
+                             readAppExnFields pt record{ae_message = s}
                           else do skip pt ft
-                                  readAppExnFields pt rec
+                                  readAppExnFields pt record
                  2 -> if ft == T_I32 then
                           do i <- readI32 pt
-                             readAppExnFields pt rec{ae_type = (toEnum $ fromIntegral i)}
+                             readAppExnFields pt record{ae_type = (toEnum $ fromIntegral i)}
                           else do skip pt ft
-                                  readAppExnFields pt rec
+                                  readAppExnFields pt record
                  _ -> do skip pt ft
                          readFieldEnd pt
-                         readAppExnFields pt rec
+                         readAppExnFields pt record
 
diff --git a/lib/hs/src/Thrift/Server.hs b/lib/hs/src/Thrift/Server.hs
index 4634a6b..ed74ceb 100644
--- a/lib/hs/src/Thrift/Server.hs
+++ b/lib/hs/src/Thrift/Server.hs
@@ -44,23 +44,23 @@
                   -> (h -> (i t, o t) -> IO Bool)
                   -> PortID
                   -> IO a
-runThreadedServer accepter hand proc port = do
+runThreadedServer accepter hand proc_ port = do
     socket <- listenOn port
-    acceptLoop (accepter socket) (proc hand)
+    acceptLoop (accepter socket) (proc_ hand)
 
 -- | A basic threaded binary protocol socket server.
 runBasicServer :: h
                -> (h -> (BinaryProtocol Handle, BinaryProtocol Handle) -> IO Bool)
                -> PortNumber
                -> IO a
-runBasicServer hand proc port = runThreadedServer binaryAccept hand proc (PortNumber port)
+runBasicServer hand proc_ port = runThreadedServer binaryAccept hand proc_ (PortNumber port)
   where binaryAccept s = do
             (h, _, _) <- accept s
             return (BinaryProtocol h, BinaryProtocol h)
 
 acceptLoop :: IO t -> (t -> IO Bool) -> IO a
-acceptLoop accepter proc = forever $
+acceptLoop accepter proc_ = forever $
     do ps <- accepter
        forkIO $ handle (\(_ :: SomeException) -> return ())
-                  (loop $ proc ps)
+                  (loop $ proc_ ps)
   where loop m = do { continue <- m; when continue (loop m) }
