@(define fun (x y)) @(bind x "x") @y @y @y @(end) @(next :list '("a" "a" "a" "b" "c")) @{z (fun x "a")} @(require (equal x "x")) @(require (equal z '("a" "a" "a"))) @(define fun2 (x y))@(bind x "x")@y@(end) @(next :string "ab") @{w (fun2 x "a")}@y @(require (equal w "a")) @(require (equal y "b")) @(next :list '("a" "a" "a" "b" "c")) @(bind d ("d")) @(cases) @ {d (fun "x" "a")} @ {require (not "get here")} @(or) @ (require "get here") @(end) @(next :string "ab") @(cases) @ {d (fun2 "x" "a")} @ {require (not "get here")} @(or) @ (require "get here") @(end) @(bind n "123") @(next :string "123456") @(cases) @ {n /\d+/} @ {require (not "get here")} @(or) @ {m /\d+/} @ (require (equal m "123456")) @(end)