{-# OPTIONS_GHC -Wall #-} module SourceSyntax.Helpers where import qualified Data.Char as Char splitDots :: String -> [String] splitDots = go [] where go vars str = case break (=='.') str of (x,_:rest) | isOp x -> vars ++ [x ++ '.' : rest] | otherwise -> go (vars ++ [x]) rest (x,[]) -> vars ++ [x] brkt :: String -> String brkt s = "{ " ++ s ++ " }" isTuple :: String -> Bool isTuple name = take 6 name == "_Tuple" && all Char.isDigit (drop 6 name) isOp :: String -> Bool isOp = all isSymbol isSymbol :: Char -> Bool isSymbol c = Char.isSymbol c || elem c "+-/*=.$<>:&|^?%#@~!"