brack(s) := block( [n: slength(s), r: 0, c], catch( for i thru n do ( if cequal(c: charat(s, i), "]") then (if (r: r - 1) < 0 then throw(false)) elseif cequal(c, "[") then r: r + 1 ), is(r = 0) ) )$ brack(""); true brack("["); false brack("]"); false brack("[]"); true brack("]["); false brack("[[][]]"); true brack("[[[]][]]]"); false