
Hey guys, Right now I'm facing with a type problem that is really nasty, I want to compose a list of enumeratees using the ($=) operator to create a new enumerator. Whenever I'm trying to use the foldx function in conjunction with ($=) I get this error: *> :t foldr ($=)* <interactive>:1:7: Occurs check: cannot construct the infinite type: b0 = Step ao0 m0 b0 Expected type: Enumerator ao0 m0 (Step ao0 m0 b0) -> Enumeratee ao0 ao0 m0 b0 -> Enumeratee ao0 ao0 m0 b0 Actual type: Enumerator ao0 m0 (Step ao0 m0 b0) -> Enumeratee ao0 ao0 m0 b0 -> Enumerator ao0 m0 b0 In the first argument of `foldr', namely `($=)' In the expression: foldr ($=) *> :t Prelude.foldl ($=)* <interactive>:1:15: Occurs check: cannot construct the infinite type: b0 = Step ao0 m0 b0 Expected type: Enumerator ao0 m0 (Step ao0 m0 b0) -> Enumeratee ao0 ao0 m0 b0 -> Enumerator ao0 m0 (Step ao0 m0 b0) Actual type: Enumerator ao0 m0 (Step ao0 m0 b0) -> Enumeratee ao0 ao0 m0 b0 -> Enumerator ao0 m0 b0 In the first argument of `Prelude.foldl', namely `($=)' In the expression: Prelude.foldl ($=) <interactive>:1:15: Occurs check: cannot construct the infinite type: b0 = Step ao0 m0 b0 Expected type: Enumerator ao0 m0 (Step ao0 m0 b0) -> Enumeratee ao0 ao0 m0 b0 -> Enumerator ao0 m0 (Step ao0 m0 b0) Actual type: Enumerator ao0 m0 (Step ao0 m0 b0) -> Enumeratee ao0 ao0 m0 b0 -> Enumerator ao0 m0 b0 In the first argument of `Prelude.foldl', namely `($=)' In the expression: Prelude.foldl ($=) Obviously there is something I don't quite understand about the ($=) (=$) functions, how can one compose a list of enumeratees, is it even possible? Cheers. Roman.-