diff --git a/ghc/compiler/prelude/TysWiredIn.lhs b/ghc/compiler/prelude/TysWiredIn.lhs
index 4df3241c29d99fae1c485ea8365ee5b9a6d1f3f7..11e9232736b94797647825ab120af7dfd1dfcc16 100644
--- a/ghc/compiler/prelude/TysWiredIn.lhs
+++ b/ghc/compiler/prelude/TysWiredIn.lhs
@@ -22,10 +22,12 @@ module TysWiredIn (
 	consDataCon,
 	doubleDataCon,
 	doubleTy,
+	isDoubleTy,
 	doubleTyCon,
 	falseDataCon,
 	floatDataCon,
 	floatTy,
+	isFloatTy,
 	floatTyCon,
 	getStatePairingConInfo,
 
@@ -252,11 +254,24 @@ floatTy	= mkTyConTy floatTyCon
 
 floatTyCon = pcNonRecDataTyCon floatTyConKey pREL_BASE SLIT("Float") [] [floatDataCon]
 floatDataCon = pcDataCon floatDataConKey pREL_BASE SLIT("F#") [] [] [floatPrimTy] floatTyCon
+
+isFloatTy :: GenType flexi -> Bool
+isFloatTy ty
+  = case (splitAlgTyConApp_maybe ty) of
+	Just (tycon, [], _) -> uniqueOf tycon == floatTyConKey
+	_		    -> False
+
 \end{code}
 
 \begin{code}
 doubleTy = mkTyConTy doubleTyCon
 
+isDoubleTy :: GenType flexi -> Bool
+isDoubleTy ty
+  = case (splitAlgTyConApp_maybe ty) of
+	Just (tycon, [], _) -> uniqueOf tycon == doubleTyConKey
+	_		    -> False
+
 doubleTyCon = pcNonRecDataTyCon doubleTyConKey pREL_BASE SLIT("Double") [] [doubleDataCon]
 doubleDataCon = pcDataCon doubleDataConKey pREL_BASE SLIT("D#") [] [] [doublePrimTy] doubleTyCon
 \end{code}