on ea0f777 help sign in
27 lines 648 B history raw
1{-# OPTIONS_GHC -Wall #-}
2module SourceSyntax.Helpers where
4import qualified Data.Char as Char
6splitDots :: String -> [String]
7splitDots = go []
8 where
9 go vars str =
10 case break (=='.') str of
11 (x,_:rest) | isOp x -> vars ++ [x ++ '.' : rest]
12 | otherwise -> go (vars ++ [x]) rest
13 (x,[]) -> vars ++ [x]
15brkt :: String -> String
16brkt s = "{ " ++ s ++ " }"
18isTuple :: String -> Bool
19isTuple name =
20 take 6 name == "_Tuple" && all Char.isDigit (drop 6 name)
22isOp :: String -> Bool
23isOp = all isSymbol
25isSymbol :: Char -> Bool
26isSymbol c =
27 Char.isSymbol c || elem c "+-/*=.$<>:&|^?%#@~!"