more parsing paper

David Feuer dfeuer@cs.brown.edu
Wed, 23 Jan 2002 16:18:00 -0500 (EST)


The paper I am reading uses the following in an instance declaration for
parsers:

p >>= f = Parser (\cs -> concat [parse (f a) cs' |
			     (a,cs') <- parse p cs])

Isn't this the same as

p >>= f = Parser (\cs ->
             [(a',cs'') | (a,cs') <- parse p cs,
		          (a',cs'') <- parse (f a) cs'])
?

If so, any guesses why they chose the more obscure form?