@record myrec { field1, field2 }; x = myrec(1,2); @define myrecf(y,z) { return x; } y = 1; switch (x) { @match myrec(2,1): printf("failed (no match)\n"); break; @match myrecf(1,2): printf("failed (not fun call)\n"); break; case myrecf(y,2): printf("ok\n"); break; default: printf("failed (default)!\n"); break; } switch (x) { case myrec(1,y): printf("failed\n"); break; @match myrec(1,y): printf("ok; y=%d\n", y); break; default: printf("failed!\n"); break; }