module Data.Char.Properties.BidiBrackets where data Type = O | C paired :: Char -> Maybe (Char, Type) paired = \ case '(' -> Just (')', O) ')' -> Just ('(', C) '[' -> Just (']', O) ']' -> Just ('[', C) '{' -> Just ('}', O) '}' -> Just ('{', C) '\3898' -> Just ('\3899', O) '\3899' -> Just ('\3898', C) '\3900' -> Just ('\3901', O) '\3901' -> Just ('\3900', C) '\5787' -> Just ('\5788', O) '\5788' -> Just ('\5787', C) '\8261' -> Just ('\8262', O) '\8262' -> Just ('\8261', C) '\8317' -> Just ('\8318', O) '\8318' -> Just ('\8317', C) '\8333' -> Just ('\8334', O) '\8334' -> Just ('\8333', C) '\8968' -> Just ('\8969', O) '\8969' -> Just ('\8968', C) '\8970' -> Just ('\8971', O) '\8971' -> Just ('\8970', C) '\9001' -> Just ('\9002', O) '\9002' -> Just ('\9001', C) '\10088' -> Just ('\10089', O) '\10089' -> Just ('\10088', C) '\10090' -> Just ('\10091', O) '\10091' -> Just ('\10090', C) '\10092' -> Just ('\10093', O) '\10093' -> Just ('\10092', C) '\10094' -> Just ('\10095', O) '\10095' -> Just ('\10094', C) '\10096' -> Just ('\10097', O) '\10097' -> Just ('\10096', C) '\10098' -> Just ('\10099', O) '\10099' -> Just ('\10098', C) '\10100' -> Just ('\10101', O) '\10101' -> Just ('\10100', C) '\10181' -> Just ('\10182', O) '\10182' -> Just ('\10181', C) '\10214' -> Just ('\10215', O) '\10215' -> Just ('\10214', C) '\10216' -> Just ('\10217', O) '\10217' -> Just ('\10216', C) '\10218' -> Just ('\10219', O) '\10219' -> Just ('\10218', C) '\10220' -> Just ('\10221', O) '\10221' -> Just ('\10220', C) '\10222' -> Just ('\10223', O) '\10223' -> Just ('\10222', C) '\10627' -> Just ('\10628', O) '\10628' -> Just ('\10627', C) '\10629' -> Just ('\10630', O) '\10630' -> Just ('\10629', C) '\10631' -> Just ('\10632', O) '\10632' -> Just ('\10631', C) '\10633' -> Just ('\10634', O) '\10634' -> Just ('\10633', C) '\10635' -> Just ('\10636', O) '\10636' -> Just ('\10635', C) '\10637' -> Just ('\10640', O) '\10638' -> Just ('\10639', C) '\10639' -> Just ('\10638', O) '\10640' -> Just ('\10637', C) '\10641' -> Just ('\10642', O) '\10642' -> Just ('\10641', C) '\10643' -> Just ('\10644', O) '\10644' -> Just ('\10643', C) '\10645' -> Just ('\10646', O) '\10646' -> Just ('\10645', C) '\10647' -> Just ('\10648', O) '\10648' -> Just ('\10647', C) '\10712' -> Just ('\10713', O) '\10713' -> Just ('\10712', C) '\10714' -> Just ('\10715', O) '\10715' -> Just ('\10714', C) '\10748' -> Just ('\10749', O) '\10749' -> Just ('\10748', C) '\11810' -> Just ('\11811', O) '\11811' -> Just ('\11810', C) '\11812' -> Just ('\11813', O) '\11813' -> Just ('\11812', C) '\11814' -> Just ('\11815', O) '\11815' -> Just ('\11814', C) '\11816' -> Just ('\11817', O) '\11817' -> Just ('\11816', C) '\12296' -> Just ('\12297', O) '\12297' -> Just ('\12296', C) '\12298' -> Just ('\12299', O) '\12299' -> Just ('\12298', C) '\12300' -> Just ('\12301', O) '\12301' -> Just ('\12300', C) '\12302' -> Just ('\12303', O) '\12303' -> Just ('\12302', C) '\12304' -> Just ('\12305', O) '\12305' -> Just ('\12304', C) '\12308' -> Just ('\12309', O) '\12309' -> Just ('\12308', C) '\12310' -> Just ('\12311', O) '\12311' -> Just ('\12310', C) '\12312' -> Just ('\12313', O) '\12313' -> Just ('\12312', C) '\12314' -> Just ('\12315', O) '\12315' -> Just ('\12314', C) '\65113' -> Just ('\65114', O) '\65114' -> Just ('\65113', C) '\65115' -> Just ('\65116', O) '\65116' -> Just ('\65115', C) '\65117' -> Just ('\65118', O) '\65118' -> Just ('\65117', C) '\65288' -> Just ('\65289', O) '\65289' -> Just ('\65288', C) '\65339' -> Just ('\65341', O) '\65341' -> Just ('\65339', C) '\65371' -> Just ('\65373', O) '\65373' -> Just ('\65371', C) '\65375' -> Just ('\65376', O) '\65376' -> Just ('\65375', C) '\65378' -> Just ('\65379', O) '\65379' -> Just ('\65378', C) _ -> Nothing