@@ -221,21 +221,9 @@ type family KeyDoesNotExist (l :: Symbol) (lts :: [*]) :: Constraint where
221221 )
222222 KeyDoesNotExist q (l := t ': lts) = KeyDoesNotExist q lts
223223
224−type RecAppend lhs rhs = RecAppendH lhs rhs rhs '[]
225−
226−type family ListConcat (xs :: [*]) (ys :: [*]) :: [*] where
227− ListConcat '[] ys = ys
228− ListConcat xs '[] = xs
229− ListConcat (x ': xs) ys = x ': (ListConcat xs ys)
230−
231−type family ListReverse (xs :: [*]) :: [*] where
232− ListReverse (x ': xs) = ListConcat (ListReverse xs) '[x]
233− ListReverse '[] = '[]
234−
235−type family RecAppendH (lhs :: [*]) (rhs :: [*]) (rhsall :: [*]) (accum :: [*]) :: [*] where
236− RecAppendH (l := t ': lhs) (m := u ': rhs) rhsall acc = RecAppendH (l := t ': lhs) rhs rhsall acc
237− RecAppendH (l := t ': lhs) '[] rhsall acc = RecAppendH lhs rhsall rhsall (l := t ': acc)
238− RecAppendH '[] rhs rhsall acc = ListConcat (ListReverse acc) rhsall
224+type family RecAppend lhs rhs where
225+ RecAppend '[] rhs = rhs
226+ RecAppend (x := t ': xs) rhs = x := t ': RecAppend xs rhs
239227
240228type family RecSize (lts :: [*]) :: Nat where
241229 RecSize '[] = 0