?(?-) (This example joins two tokens.) <> (join (?a) (?*)) (join reverse (?a) List (?*)) <> (join List () List ?*) (?*) <> (join List (?x ?y) List ?z) (join List ?y List (?x ?z)) <> (reverse List ()) (List) <> (reverse (?*)) (reverse List (?*) ()) <> (reverse List (?x ?y) ?z) (reverse List ?y (?x ?z)) join (foo) (bar)