Skip to content

Commit a287861

Browse files
committed
Misc comments and formatting. #148
1 parent 0bce9fd commit a287861

File tree

3 files changed

+34
-29
lines changed

3 files changed

+34
-29
lines changed

src/Language/CQL/Instance.hs

+20-17
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ data InstanceEx :: * where
9898
-> InstanceEx
9999

100100

101-
-- | Converts an algebra into a presentation: adds one equation per fact in the algebra
102-
-- and one generator per element. Presentations in this form are called saturated because
103-
-- they are maximally large without being redundant. @I(fk.x) = I(fk)(I(x))@
101+
-- | Converts an algebra into a presentation: adds one equation per fact in the algebra,
102+
-- and one generator per element. Presentations in this form are called saturated because
103+
-- they are maximally large without being redundant. @I(fk.x) = I(fk)(I(x))@
104104
algebraToPresentation :: (MultiTyMap '[Show, Ord, NFData] '[var, ty, sym, en, fk, att, gen, sk], Ord y, Ord x)
105105
=> Algebra var ty sym en fk att gen sk x y
106106
-> Presentation var ty sym en fk att x y
@@ -240,7 +240,7 @@ initialInstance p dp' sch = Instance sch p dp'' $ initialAlgebra
240240
nf'''' (Left g) = Sk $ MkTalgGen $ Left g
241241
nf'''' (Right (gt, att)) = Sk $ MkTalgGen $ Right (gt, att)
242242

243-
--repr'''' :: TalgGen en fk att gen sk -> Term Void ty sym en fk att gen sk
243+
repr'''' :: TalgGen en fk att gen sk -> Term Void ty sym en fk att gen sk
244244
repr'''' (MkTalgGen (Left g)) = Sk g
245245
repr'''' (MkTalgGen (Right (x, att))) = Att att $ upp x
246246

@@ -417,12 +417,12 @@ evalInstanceRaw' sch (InstExpRaw' _ gens0 eqs' _ _) is = do
417417
rest <- transEq gens' sks' eqs''
418418
pure $ Set.insert (EQ (lhs', rhs')) rest
419419

420-
--transPath :: forall en fk gen . [String] -> RawTerm -> Err (Term Void Void Void en fk Void Gen Void)
420+
transPath :: forall var' ty' sym' en' att'. [String] -> RawTerm -> Err (Term var' ty' sym' en' fk att' String Sk)
421421
transPath gens' (RawApp x []) | elem x gens' = pure $ Gen x
422422
transPath gens' (RawApp x [a]) | elem' x (Map.keys $ sch_fks sch) = Fk (fromJust $ cast x) <$> transPath gens' a
423423
transPath _ x = Left $ "cannot type " ++ show x
424424

425-
--transTerm :: forall ty sym en fk att Gen Sk . [String] -> [String] -> RawTerm -> Err (Term Void ty sym en fk att Gen Sk)
425+
transTerm :: [String] -> [String] -> RawTerm -> Err (Term Void ty sym en fk att Gen Sk)
426426
transTerm gens' _ (RawApp x []) | elem x gens' = pure $ Gen x
427427
transTerm _ sks' (RawApp x []) | elem x sks' = pure $ Sk x
428428
transTerm gens' _ (RawApp x [a]) | elem' x (Map.keys $ sch_fks sch) = Fk (fromJust $ cast x) <$> transPath gens' a
@@ -462,23 +462,28 @@ evalInstanceRaw ops ty' t is = do
462462

463463
-- | The empty instance on a schema has no data, so the types of its generators and carriers are 'Void'.
464464
emptyInstance :: Schema var ty sym en fk att -> Instance var ty sym en fk att Void Void Void Void
465-
emptyInstance ts'' = Instance ts''
465+
emptyInstance ts'' =
466+
Instance
467+
ts''
466468
(Presentation Map.empty Map.empty Set.empty)
467469
(const undefined)
468470
(Algebra ts''
469471
(const Set.empty) (const undefined) (const undefined) (const undefined)
470472
(const Set.empty) (const undefined) (const undefined)
471473
Set.empty)
472474

473-
-- | Pivots an instance. The returned schema will not have strings as fks etc, so it will be impossible to write a literal on it, at least for now.
474-
-- (Java CQL hacks around this by landing on String.)
475-
pivot :: forall var ty sym en fk att gen sk x y
475+
-- | Pivot an instance. The returned schema will not have strings as fks etc, so it will be impossible to write a literal on it, at least for now.
476+
-- (Java CQL hacks around this by landing on String.)
477+
pivot
478+
:: forall var ty sym en fk att gen sk x y
476479
. (MultiTyMap '[Show, Ord, Typeable] '[var, ty, sym, en, fk, att, gen, sk, x, y])
477-
=> Instance var ty sym en fk att gen sk x y
478-
-> (Schema var ty sym (x, en) (x, fk) (x, att)
479-
, Instance var ty sym (x, en) (x, fk) (x, att) (x, en) y (x, en) y
480-
, Mapping var ty sym (x, en) (x, fk) (x, att) en fk att)
481-
pivot (Instance sch _ idp (Algebra _ ens _ fk fn tys nnf rep2'' teqs)) = (sch', inst, mapp)
480+
=> Instance var ty sym en fk att gen sk x y
481+
-> ( Schema var ty sym (x, en) (x, fk) (x, att)
482+
, Instance var ty sym (x, en) (x, fk) (x, att) (x, en) y (x, en) y
483+
, Mapping var ty sym (x, en) (x, fk) (x, att) en fk att
484+
)
485+
pivot (Instance sch _ idp (Algebra _ ens _ fk fn tys nnf rep2'' teqs)) =
486+
(sch', inst, mapp)
482487
where
483488
sch'_ens = Set.fromList [ (x, en) | en <- Set.toList (Schema.ens sch), x <- Set.toList (ens en)]
484489
sch'_fks = Map.fromList [ ((x, fk0 ), ((x, en), (fk fk0 x, en'))) | en <- Set.toList (Schema.ens sch), x <- Set.toList (ens en), (fk0, en') <- fksFrom' sch en ]
@@ -536,7 +541,6 @@ pivot (Instance sch _ idp (Algebra _ ens _ fk fn tys nnf rep2'' teqs)) = (sch',
536541
Fk (_, f) a -> Fk f $ instToInst a
537542
Gen (x, _) -> upp $ fn x
538543

539-
-- coproducts, etc
540544

541545
---------------------------------------------------------------------------------------------------------------
542546
-- Functorial data migration
@@ -551,7 +555,6 @@ subs (Mapping _ _ ens' fks' atts') (Presentation gens' sks' eqs') = Presentation
551555
gens'' = Map.map (\k -> ens' ! k) gens'
552556
eqs'' = Set.map (\(EQ (l, r)) -> EQ (changeEn fks' atts' l, changeEn fks' atts' r)) eqs'
553557

554-
555558
changeEn
556559
:: (Ord k1, Ord k2, Eq var)
557560
=> Map k1 (Term () Void Void en1 fk Void Void Void)

src/Language/CQL/Instance/Algebra.hs

+2-3
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ data Algebra var ty sym en fk att gen sk x y
8686
instance (NFData var, NFData ty, NFData sym, NFData en, NFData fk, NFData att, NFData x, NFData y)
8787
=> NFData (Algebra var ty sym en fk att gen sk x y)
8888
where
89-
rnf (Algebra s0 e0 nf0 nf02 repr0 ty0 nf1 repr1 eqs1) = deepseq s0 $ f e0 $ deepseq nf0 $ deepseq repr0
90-
$ w ty0 $ deepseq nf1 $ deepseq repr1 $ deepseq nf02 $ rnf eqs1
89+
rnf (Algebra s0 e0 nf0 nf02 repr0 ty0 nf1 repr1 eqs1) =
90+
deepseq s0 $ f e0 $ deepseq nf0 $ deepseq repr0 $ w ty0 $ deepseq nf1 $ deepseq repr1 $ deepseq nf02 $ rnf eqs1
9191
where
9292
f g = deepseq (Set.map (rnf . g) $ Schema.ens s0)
9393
w g = deepseq (Set.map (rnf . g) $ tys (typeside s0))
@@ -111,7 +111,6 @@ evalSchTerm alg x term = case term of
111111
Sym f as -> Sym f $ fmap (evalSchTerm alg x) as
112112
_ -> error "Impossibility in evalSchTerm, please report. Given a term of non-type sort."
113113

114-
115114
-- | Helper to convert terms in the 'Collage' of entity sort into terms with 'Void's in the attribute etc slots.
116115
-- Morally, 'Collage' should store two or more classes of equation, but having to convert like this is relatively rare.
117116
-- Indeed, 'IP.satisfiesSchema' itself is redundant; a properly functioning CQL would not generate unsatisfying

src/Language/CQL/Term.hs

+12-9
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ occurs h x = case x of
268268
Sym h' as -> h == HSym h' || any (occurs h) as
269269

270270
-- | If there is one, finds an equation of the form empty |- @gen/sk = term@,
271-
-- where @gen@ does not occur in @term@.
271+
-- where @gen@ does not occur in @term@.
272272
findSimplifiableEqs
273273
:: (Eq ty, Eq sym, Eq en, Eq fk, Eq att, Eq gen, Eq sk)
274274
=> Theory var ty sym en fk att gen sk
@@ -280,13 +280,14 @@ findSimplifiableEqs = procEqs . Set.toList
280280
g (Gen y) t = if occurs (HGen y) t then Nothing else Just (HGen y, t)
281281
g (Sym _ []) _ = Nothing
282282
g _ _ = Nothing
283-
procEqs [] = Nothing
283+
284+
procEqs [] = Nothing
284285
procEqs ((m, _):tl) | not (Map.null m) = procEqs tl
285-
procEqs ((_, EQ (lhs, rhs)):tl) = case g lhs rhs of
286-
Nothing -> case g rhs lhs of
287-
Nothing -> procEqs tl
288-
Just y -> Just y
289-
Just y -> Just y
286+
procEqs ((_, EQ (lhs, rhs)):tl) = case g lhs rhs of
287+
Nothing -> case g rhs lhs of
288+
Nothing -> procEqs tl
289+
Just y -> Just y
290+
Just y -> Just y
290291

291292
-- | Replaces a symbol by a term in a term.
292293
replace'
@@ -343,7 +344,8 @@ simplifyTheoryStep eqs = case findSimplifiableEqs eqs of
343344
class Up x y where
344345
upgr :: x -> y
345346

346-
upp :: (Up var var', Up ty ty', Up sym sym', Up en en', Up fk fk', Up att att', Up gen gen', Up sk sk')
347+
upp
348+
:: (Up var var', Up ty ty', Up sym sym', Up en en', Up fk fk', Up att att', Up gen gen', Up sk sk')
347349
=> Term var ty sym en fk att gen sk
348350
-> Term var' ty' sym' en' fk' att' gen' sk'
349351
upp (Var v ) = Var $ upgr v
@@ -374,8 +376,9 @@ type Theory var ty sym en fk att gen sk = Set (Ctx var (ty+en), EQ var ty sym en
374376
type Ctx k v = Map k v
375377

376378
-- Our own pair type for pretty printing purposes
379+
-- | This type indicates that the two terms are equal.
377380
newtype EQ var ty sym en fk att gen sk
378-
= EQ (Term var ty sym en fk att gen sk, Term var ty sym en fk att gen sk) deriving (Ord,Eq)
381+
= EQ (Term var ty sym en fk att gen sk, Term var ty sym en fk att gen sk) deriving (Ord, Eq)
379382

380383
instance TyMap Show '[var, ty, sym, en, fk, att, gen, sk] => Show (EQ var ty sym en fk att gen sk) where
381384
show (EQ (lhs,rhs)) = show lhs ++ " = " ++ show rhs

0 commit comments

Comments
 (0)