fun parenthesised(text) = parenthesised'(explode(text)) and curlybraces x para = if para=[] then false else case (hd(para)) of #"{" => curlybraces (curlybraces x) (tl(para)) | #"[" => brackets (curlybraces x) (tl(para)) | #"(" => parantheses (curlybraces x) (tl(para)) | #"]" => false | #")" => false | #"}" => x (tl(para)) | _ => curlybraces x (tl(para)) and brackets x para = if para=[] then false else case (hd(para)) of #"{" => curlybraces (brackets x) (tl(para)) | #"[" => brackets (brackets x) (tl(para)) | #"(" => parantheses (brackets x) (tl(para)) | #"]" => x (tl(para)) | #")" => false | #"}" => false | _ => brackets x (tl(para)) and parantheses x para = if para=[] then false else case (hd(para)) of #"{" => curlybraces (parantheses x) (tl(para)) | #"[" => brackets (parantheses x) (tl(para)) | #"(" => parantheses (parantheses x) (tl(para)) | #"]" => false | #")" => x (tl(para)) | #"}" => false | _ => parantheses x (tl(para)) and parenthesised'(para) = if para=[] then true else case (hd(para)) of #"{" => curlybraces parenthesised' (tl(para)) | #"[" => brackets parenthesised' (tl(para)) | #"(" => parantheses parenthesised' (tl(para)) | #"]" => false | #")" => false | #"}" => false | _ => parenthesised'(tl(para))