Desugared: SimpleListComp.f :: for all d. [d] -> [d] SimpleListComp.f = /\ t104 -> \ xs.145 -> let {- CoRec -} ds.146 = \ ds.147 -> case ds.147 of { Nil -> Nil t104 (:) ds.148 ds.149 -> let x.150 = ds.148 in (: t104) x.150 (ds.146 ds.149) } {- end CoRec -} in ds.146 xs.145 SimpleListComp.g :: for all d, e, f. [d] -> [e] -> [f] -> [(d, e, f)] SimpleListComp.g = /\ t110 t111 t112 -> \ xs.163 ys.164 zs.165 -> let {- CoRec -} ds.166 = \ ds.167 -> case ds.167 of { Nil -> Nil (t110, t111, t112) (:) ds.168 ds.169 -> let x.170 = ds.168 in let {- CoRec -} ds.171 = \ ds.172 -> case ds.172 of { Nil -> ds.166 ds.169 (:) ds.173 ds.174 -> let y.175 = ds.173 in let {- CoRec -} ds.176 = \ ds.177 -> case ds.177 of { Nil -> ds.171 ds.174 (:) ds.178 ds.179 -> let z.180 = ds.178 in (: (t110, t111, t112)) (MkTuple3! t110 t111 t112 x.170 y.175 z.180) (ds.176 ds.179) } {- end CoRec -} in ds.176 zs.165 } {- end CoRec -} in ds.171 ys.164 } {- end CoRec -} in ds.166 xs.163 SimpleListComp.h :: for all d. [d] -> [d] -> [[d]] SimpleListComp.h = /\ t118 -> \ xs.189 ys.190 -> let {- CoRec -} ds.191 = \ ds.192 -> case ds.192 of { Nil -> Nil [t118] (:) ds.193 ds.194 -> let x.195 = ds.193 in let {- CoRec -} ds.196 = \ ds.197 -> case ds.197 of { Nil -> ds.191 ds.194 (:) ds.198 ds.199 -> let y.200 = ds.198 in ds.196 ds.199 } {- end CoRec -} in ds.196 ys.190 } {- end CoRec -} in ds.191 xs.189 SimpleListComp.i :: for all d, e. -> -> [([e], [d])] -> [[e]] SimpleListComp.i = /\ t128 t127 -> \ dict.133 dict.132 -> let dict.130 = (dfun.Eq.List t127) dict.132 in let dict.131 = (dfun.Eq.List t128) dict.133 in let dict.126 = ((dfun.Eq.Tuple2 [t127]) [t128]) dict.130 dict.131 in let i.120 = \ xs.78 -> let {- CoRec -} ds.201 = \ ds.202 -> case ds.202 of { Nil -> Nil [t127] (:) ds.203 ds.204 -> case ds.203 of { MkTuple2 x.80 y.81 -> let all.79 = ds.203 in case ((== ([t127], [t128])) dict.126 all.79 (MkTuple2! [t127] [t128] (Nil! t127) (Nil! t128))) of { True -> (: [t127]) x.80 (ds.201 ds.204) False -> ds.201 ds.204 } } } {- end CoRec -} in ds.201 xs.78 in i.120 SimpleListComp.j :: for all d, e, f, g. [(f, g, d, e)] -> [(f, g)] SimpleListComp.j = /\ t139 t140 t137 t138 -> \ xs.210 -> let {- CoRec -} ds.211 = \ ds.212 -> case ds.212 of { Nil -> Nil (t137, t138) (:) ds.213 ds.214 -> case ds.213 of { MkTuple4 a.215 b.216 c.217 d.218 -> (: (t137, t138)) (MkTuple2! t137 t138 a.215 b.216) (ds.211 ds.214) } } {- end CoRec -} in ds.211 xs.210