Python supports chaining relational operators so you can express 2 < 3 < 4 and get true. It looks like this is implemented as a little compiler trick that actually creates the expression "2 < 3 and 3 < 4". This can be confusing if you try to do something insane like implement Haskell's (>>=) in Python using (>=). Something like:

**Just**(10) >= (**lambda** x : **Just**(x + 1)) >= (**lambda** x : **Just**(x / 2))

Will actually become:

**Just**(10) >= (**lambda** x : **Just**(x + 1)) **and** \
(**lambda** x : **Just**(x + 1)) >= (**lambda** x : **Just**(x / 2))

This only seems to only apply to the relational operators, choosing to implement (>>=) with (>>) in Python seems to work fine. Here is a Gist showing the problem from

@apgwoz:

https://gist.github.com/916132.

## No comments:

## Post a Comment