Bracket Matching by notogawa

m@main=getLine>>=putStrLn.(""#)>>m
x@ ~(a:s)#y@(b:t)|elem b"([{<"=(b:x)#t|a<b&&b<[a..]!!4=s#t|1>0="failed at: "++y
""#_="yes"
x#_=x#"EOL"

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return top