Jon Harrop <jon at ffconsultancy.com> writes: > # cond 2 > [( = ) 1, "one"; > ( = ) 2, "two"; > ( = ) 3, "three"] > "neither one, two nor three";; > - : string = "two" I'm missing something. Doesn't Ocaml have strict evaluation? That means if you use function calls instead of string constants in those values, they all get called. You haven't really done what cond does.