on e00a3f3 help sign in
elk/src/AST/Helpers.hs
65 lines 919 B history raw
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3module AST.Helpers
4 ( zeroTuple
5 , makeTuple
6 , isTuple
7 , isOp
8 , isSymbol
9 , desymbol
10 )
11 where
13import qualified Data.Char as Char
14import qualified Data.Map as Map
15import Data.Map ((!))
16import qualified Data.Text as Text
17import Data.Text (Text)
21-- TUPLES
24zeroTuple :: Text
25zeroTuple =
26 "#0"
29makeTuple :: Int -> Text
30makeTuple size =
31 Text.pack ('#' : show size)
34isTuple :: Text -> Bool
35isTuple name =
36 Text.isPrefixOf "#" name
37 &&
38 Text.all Char.isDigit (Text.drop 1 name)
42-- INFIX OPERATORS
45isOp :: Text -> Bool
46isOp name =
47 Text.all isSymbol name
50isSymbol :: Char -> Bool
51isSymbol c =
52 Map.member c validSymbols
55validSymbols :: Map.Map Char Char
56validSymbols =
57 Map.fromList $
58 zip
59 "+-/*=.<>:&|^?%~!"
60 "abcdefghijklmnop"
63desymbol :: Text -> Text
64desymbol name =
65 Text.map (\c -> validSymbols ! c) name