[racket-dev] racket/match is broken

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Wed Oct 5 21:39:51 EDT 2011

On Wed, Oct 5, 2011 at 5:13 PM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
> Basically, it calls the app function on the second element of the list
> even though the head of the list has failed to pattern match.

This is not a bug.  `match' makes no guarantee about the order in
which it checks elements of the pattern.  If it were to try to support
this kind of use case, it would have to specify how many times it
would call each function that might be embedded in a match, which
requires a detailed semantics of backtracking in the matcher, and lock
in a particular implementation.

I will clarify the documentation to say that you shouldn't use
functions that aren't safe to call 0, 1, or more times, in various
orders, inside `match' patterns.
sam th
samth at ccs.neu.edu

Posted on the dev mailing list.