Code generated by pointfree does not compile

Hi all! I was playing with pointfree tool from hackage and found that it produces wrong code for some functions which use list comprehension. Here are several examples: :main f x = concat [x:f x| x<-[0..x-1]] f = fix ((join .) . flip flip [] . ((:) .) . ap (:) . (`ap` (enumFromTo 0 . subtract 1)) . ((<-) .) . ((|) =<<)) This does not compile because (<-) and (|) are used as functions whereas they are not. :main map (+1) [x| x<-[0..x]] [x | x <- [0..x] + 1] This does not compile either because the result code tries to add one to list. Why does this happen? This looks like a bug. Thanks, Boris Lykah -- View this message in context: http://old.nabble.com/Code-generated-by-pointfree-does-not-compile-tp2621170... Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.

On Thu, Nov 5, 2009 at 4:46 AM, Boris Lykah
Hi all!
I was playing with pointfree tool from hackage and found that it produces wrong code for some functions which use list comprehension.
Here are several examples:
:main f x = concat [x:f x| x<-[0..x-1]] f = fix ((join .) . flip flip [] . ((:) .) . ap (:) . (`ap` (enumFromTo 0 . subtract 1)) . ((<-) .) . ((|) =<<)) This does not compile because (<-) and (|) are used as functions whereas they are not.
Looks like pointfree doesn't understand list comprehension syntax. Convert to normal functional notation instead: main f x = concat (map (\x -> x : f x) [0..x-1]) Luke
participants (2)
-
Boris Lykah
-
Luke Palmer