Changes between Version 78 and Version 79 of TypeFunctionsSolving
- Timestamp:
- 09/05/08 03:10:29 (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TypeFunctionsSolving
v78 v79 82 82 -- !!!TODO: Adapt to new flattening!!! 83 83 norm :: EqInst -> [RewriteInst] 84 norm [[co :: F s1..sn ~ t]] = [[co :: F s1'..sn' ~ t']] : eqs1++..++eqsn++eqt84 norm [[co :: F s1..sn ~ t]] = adjust [[co :: F s1'..sn' ~ t']] (F c1..cn |> sym c) (eqs1++..++eqsn++eqt) 85 85 where 86 (s1', eqs1) = flatten s186 (s1', c1, eqs1) = flatten s1 87 87 .. 88 (sn', eqsn) = flatten sn89 (t', eqt) = flatten t88 (sn', cn, eqsn) = flatten sn 89 (t', c, eqt) = flatten t 90 90 norm [[co :: t ~ F s1..sn]] = norm [[co' :: F s1..sn ~ t]] with co = sym co' 91 norm [[co :: s ~ t]] = check [[co :: s' ~ t']] ++ eqs ++ eqt91 norm [[co :: s ~ t]] = adjust (check [[co :: s' ~ t']]) (cs |> sym ct) (eqs ++ eqt) 92 92 where 93 (s', eqs) = flatten s94 (t', eqt) = flatten t93 (s', cs, eqs) = flatten s 94 (t', ct, eqt) = flatten t 95 95 96 96 check :: FlatEqInst -> [RewriteInst] … … 110 110 check [[co :: T ~ S]] = fail 111 111 112 -- !!!TODO: Well, we actually only want the coercion for wanteds, locals should stay with id...113 112 flatten :: Type -> (Type, Coercion, [RewriteInst]) 114 113 -- Result type has no synonym families whatsoever … … 124 123 (t2', c2, eqt) = flatten t2 125 124 flatten t = (t, t, []) 125 126 adjust :: [RewriteInst] -> Coercion -> [RewriteInst] -> [RewriteInst] 127 -- Adjust coercions depending on whether we process a local or wanted equality 128 adjust ... 126 129 }}} 127 130
