DEV Community

Discussion on: Daily Challenge #51 - Valid Curly Braces

Collapse
 
aminnairi profile image
Amin • Edited

My take at the challenge written in Haskell.

countUnmatchedBraces :: Int -> Char -> Int
countUnmatchedBraces count character
  | character == '{' = count - 1
  | character == '}' = count + 1
  | otherwise = count

unmatchedBraces :: String -> Int
unmatchedBraces = foldl countUnmatchedBraces 0

zero :: Int -> Bool
zero = (==) 0

areCurlyBracesMatched :: String -> Bool
areCurlyBracesMatched = zero . unmatchedBraces


man :: IO ()
main = do
  putStrLn $ show $ areCurlyBracesMatched "const f = a => { console.log(a)" -- False
  putStrLn $ show $ areCurlyBracesMatched "const f = a => { console.log(a) }" -- True
  putStrLn $ show $ areCurlyBracesMatched "const f = a => console.log(a)" -- True

Try it online.