record order bug fix

This commit is contained in:
aarne
2006-10-11 20:44:18 +00:00
parent 9747837a5a
commit 5c4438409d
2 changed files with 4 additions and 5 deletions

View File

@@ -156,9 +156,6 @@ redTerm :: Type -> Err G.Exp
redTerm t = return $ rtExp t
-- to normalize records and record types
sortByLabel :: (a -> Label) -> [a] -> [a]
sortByLabel f = sortBy (\ x y -> compare (f x) (f y))
sortByFst :: Ord a => [(a,b)] -> [(a,b)]
sortByFst = sortBy (\ x y -> compare (fst x) (fst y))

View File

@@ -30,7 +30,7 @@ import GF.Grammar.Abstract
import GF.Infra.Modules
import GF.Grammar.Lockfield
import Data.List (nub)
import Data.List (nub,sortBy)
import Control.Monad
-- whether lock fields are added in reuse
@@ -137,12 +137,14 @@ allParamValues cnc ptyp = case ptyp of
return [EInt i | i <- [0..n]]
QC p c -> lookupParamValues cnc p c
RecType r -> do
let (ls,tys) = unzip r
let (ls,tys) = unzip $ sortByFst r
tss <- mapM allPV tys
return [R (zipAssign ls ts) | ts <- combinations tss]
_ -> prtBad "cannot find parameter values for" ptyp
where
allPV = allParamValues cnc
-- to normalize records and record types
sortByFst = sortBy (\ x y -> compare (fst x) (fst y))
qualifAnnot :: Ident -> Term -> Term
qualifAnnot _ = id