Can anyone help with this problem from Bird:

a. Convert the following list comprehensions to combinatory style:

   i.   [(x, y) | x <- [1..n], odd x, y <- [1..n]]
   ii.  [(x, y) | x <- [1..n], y <- [1..n], odd x]

b. Are they equal?

c. Compare the costs of evaluating the two expressions.

I gather that by combinatory style, he means the use of concat, map, and 
filter.  While Bird provides the following conversion rules, he doesn't prove 
them, justify them, or even provide an example using them:

   R1.  [ f x | x <- xs      ]  =  map f xs
   R2.  [   x | x <- xs, p x ]  =  filter p xs
   R3.  [ e   | Q, P         ]  =  concat [[e | P] | Q]
   R4.  [ e   | x <- [d | P] ]  =  [e [x := d] | Q, P]

Thanks.


_________________________________________________________________
Windows Liveā„¢ Groups: Create an online spot for your favorite groups to meet.
http://windowslive.com/online/groups?ocid=TXT_TAGLM_WL_groups_032009
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to