X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FdeSugar%2FDsListComp.lhs;h=74091017c6cc95df841ffcdd263ccc34b262ebc2;hb=3a99fa889bdff0c86df20cb18c71d30e30a79b43;hp=6bb41a92e4b54bcd7cfcdbd3c2babd43ca1a2885;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/deSugar/DsListComp.lhs b/compiler/deSugar/DsListComp.lhs index 6bb41a9..7409101 100644 --- a/compiler/deSugar/DsListComp.lhs +++ b/compiler/deSugar/DsListComp.lhs @@ -1,7 +1,9 @@ % +% (c) The University of Glasgow 2006 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % -\section[DsListComp]{Desugaring list comprehensions and array comprehensions} + +Desugaring list comprehensions and array comprehensions \begin{code} module DsListComp ( dsListComp, dsPArrComp ) where @@ -10,30 +12,26 @@ module DsListComp ( dsListComp, dsPArrComp ) where import {-# SOURCE #-} DsExpr ( dsLExpr, dsLocalBinds ) -import BasicTypes ( Boxity(..) ) +import BasicTypes import HsSyn -import TcHsSyn ( hsPatType, mkVanillaTuplePat ) +import TcHsSyn import CoreSyn import DsMonad -- the monadery used in the desugarer import DsUtils -import DynFlags ( DynFlag(..), dopt ) -import StaticFlags ( opt_RulesOff ) -import CoreUtils ( exprType, mkIfThenElse ) -import Id ( idType ) -import Var ( Id ) -import Type ( mkTyVarTy, mkFunTys, mkFunTy, Type, - splitTyConApp_maybe ) -import TysPrim ( alphaTyVar ) -import TysWiredIn ( nilDataCon, consDataCon, trueDataConId, falseDataConId, - unitDataConId, unitTy, mkListTy, parrTyCon ) -import Match ( matchSimply ) -import PrelNames ( foldrName, buildName, replicatePName, mapPName, - filterPName, zipPName, crossPName ) -import PrelInfo ( pAT_ERROR_ID ) -import SrcLoc ( noLoc, unLoc ) -import Panic ( panic ) +import DynFlags +import StaticFlags +import CoreUtils +import Var +import Type +import TysPrim +import TysWiredIn +import Match +import PrelNames +import PrelInfo +import SrcLoc +import Panic \end{code} List comprehensions may be desugared in one of two ways: ``ordinary'' @@ -197,7 +195,7 @@ deBindComp pat core_list1 quals body core_list2 u3_ty@u1_ty = exprType core_list1 -- two names, same thing -- u1_ty is a [alpha] type, and u2_ty = alpha - u2_ty = hsPatType pat + u2_ty = hsLPatType pat res_ty = exprType core_list2 h_ty = u1_ty `mkFunTy` res_ty @@ -313,7 +311,7 @@ dfListComp c_id n_id (BindStmt pat list1 _ _ : quals) body = dsLExpr list1 `thenDs` \ core_list1 -> -- find the required type - let x_ty = hsPatType pat + let x_ty = hsLPatType pat b_ty = idType n_id in