commit 4a625503e4ea2c6cff8fe19161cf3e865642b37e
parent 5acc628aa8b404de84f31490ca40ac54ccd86ca2
Author: James Eversole <james@eversole.co>
Date: Fri, 7 Feb 2025 12:37:27 -0600
Lint cleanup and README updates
Diffstat:
4 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
@@ -84,6 +84,12 @@ tricu decode [OPTIONS]
Defaults to stdin.
```
+## Collaborating
+
+I am happy to accept issue reports, pull requests, or questions about tricu [via email](mailto:james@eversole.co).
+
+If you want to collaborate but don't want to email back-and-forth, please reach out via email once to let me know and I will provision a git.eversole.co account for you.
+
## Acknowledgements
Tree Calculus was discovered by [Barry Jay](https://github.com/barry-jay-personal/blog).
diff --git a/src/Lexer.hs b/src/Lexer.hs
@@ -3,6 +3,7 @@ module Lexer where
import Research
import Control.Monad (void)
+import Data.Functor (($>))
import Data.Void
import Text.Megaparsec
import Text.Megaparsec.Char hiding (space)
@@ -54,7 +55,7 @@ lexTricu input = case runParser tricuLexer "" input of
keywordT :: Lexer LToken
-keywordT = string "t" *> notFollowedBy alphaNumChar *> pure LKeywordT
+keywordT = string "t" *> notFollowedBy alphaNumChar $> LKeywordT
identifier :: Lexer LToken
identifier = do
@@ -63,7 +64,7 @@ identifier = do
<|> digitChar <|> char '_' <|> char '-' <|> char '?'
<|> char '$' <|> char '#' <|> char '@' <|> char '%'
let name = first : rest
- if (name == "t" || name == "!result")
+ if name == "t" || name == "!result"
then fail "Keywords (`t`, `!result`) cannot be used as an identifier"
else return (LIdentifier name)
@@ -76,7 +77,7 @@ namespace = do
return (LNamespace name)
dot :: Lexer LToken
-dot = char '.' *> pure LDot
+dot = char '.' $> LDot
lImport :: Lexer LToken
lImport = do
@@ -88,28 +89,28 @@ lImport = do
return (LImport path name)
assign :: Lexer LToken
-assign = char '=' *> pure LAssign
+assign = char '=' $> LAssign
colon :: Lexer LToken
-colon = char ':' *> pure LColon
+colon = char ':' $> LColon
backslash :: Lexer LToken
-backslash = char '\\' *> pure LBackslash
+backslash = char '\\' $> LBackslash
openParen :: Lexer LToken
-openParen = char '(' *> pure LOpenParen
+openParen = char '(' $> LOpenParen
closeParen :: Lexer LToken
-closeParen = char ')' *> pure LCloseParen
+closeParen = char ')' $> LCloseParen
openBracket :: Lexer LToken
-openBracket = char '[' *> pure LOpenBracket
+openBracket = char '[' $> LOpenBracket
closeBracket :: Lexer LToken
-closeBracket = char ']' *> pure LCloseBracket
+closeBracket = char ']' $> LCloseBracket
lnewline :: Lexer LToken
-lnewline = char '\n' *> pure LNewline
+lnewline = char '\n' $> LNewline
sc :: Lexer ()
sc = space
diff --git a/src/Parser.hs b/src/Parser.hs
@@ -3,12 +3,12 @@ module Parser where
import Lexer
import Research
-import Control.Monad (void)
+import Control.Monad (void)
import Control.Monad.State
-import Data.List.NonEmpty (toList)
-import Data.Void (Void)
+import Data.List.NonEmpty (toList)
+import Data.Void (Void)
import Text.Megaparsec
-import Text.Megaparsec.Error (ParseErrorBundle, errorBundlePretty)
+import Text.Megaparsec.Error (ParseErrorBundle, errorBundlePretty)
import qualified Data.Set as Set
data PState = PState
diff --git a/src/Research.hs b/src/Research.hs
@@ -1,6 +1,5 @@
module Research where
-import Control.Monad.State
import Data.List (intercalate)
import Data.Map (Map)
import Data.Text (Text, replace)