Advise-me-0.1: src/Util/Parentheses.hs
-----------------------------------------------------------------------------
-- Copyright 2019, Advise-Me project team. This file is distributed under
-- the terms of the Apache License 2.0. For more information, see the files
-- "LICENSE.txt" and "NOTICE.txt", which are included in the distribution.
-----------------------------------------------------------------------------
-- |
-- Maintainer : bastiaan.heeren@ou.nl
-- Stability : provisional
-- Portability : portable (depends on ghc)
--
-----------------------------------------------------------------------------
module Util.Parentheses where
balanced :: String -> Bool
balanced = rec ""
where
rec st [] = null st
rec st (x:xs)
| x `elem` "([{" = rec (x:st) xs
| x `elem` ")]}" = match (take 1 st) x && rec (drop 1 st) xs
| otherwise = rec st xs
match :: String -> Char -> Bool
match "(" ')' = True
match "[" ']' = True
match "{" '}' = True
match _ _ = False