aboutsummaryrefslogtreecommitdiff
path: root/src/Language/SimpleShell/Parser/Function.hs
diff options
context:
space:
mode:
authorEinhard Leichtfuß <alguien@respiranto.de>2025-05-20 19:40:53 +0200
committerEinhard Leichtfuß <alguien@respiranto.de>2025-05-20 22:36:30 +0200
commitfd94a9d8a3e4fc86e5128715a2bc68187c872970 (patch)
treeacee31c8049cbcd6b8c73c7e55192eca1203486b /src/Language/SimpleShell/Parser/Function.hs
parentb40c163b40615ccd46a80d9119262f9c386bac63 (diff)
Reduce name parsers to nameP
There is no good reason to have different syntax for variable and function names, for example.
Diffstat (limited to 'src/Language/SimpleShell/Parser/Function.hs')
-rw-r--r--src/Language/SimpleShell/Parser/Function.hs6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/Language/SimpleShell/Parser/Function.hs b/src/Language/SimpleShell/Parser/Function.hs
index 29ebbaa..26f5a5c 100644
--- a/src/Language/SimpleShell/Parser/Function.hs
+++ b/src/Language/SimpleShell/Parser/Function.hs
@@ -12,7 +12,7 @@ import Language.SimpleShell.AST.Name (VarName)
import Language.SimpleShell.AST.SimpleType (FunSig, Typed)
import Language.SimpleShell.Parser (Parser, symbol, declareVars)
import Language.SimpleShell.Parser.Expr (strongTermP)
-import Language.SimpleShell.Parser.Name (funNameP, varNameP, keyword)
+import Language.SimpleShell.Parser.Name (nameP, keyword)
import Language.SimpleShell.Parser.SimpleType (simpleTypeP, forceType)
import Control.Applicative ((<|>))
@@ -23,14 +23,14 @@ functionP :: Parser (FunSig, Function)
functionP = do
keyword "function"
t' <- simpleTypeP
- fname <- funNameP
+ fname <- nameP
params <- symbol "(" *> paramP `sepBy` symbol "," <* symbol ")"
let (ts, vars) = unzip params
body <- forceType t' (bodyP params) <|> fail "Function return type mismatch."
return ((t', ts), Function fname vars body)
paramP :: Parser (Typed VarName)
-paramP = (,) <$> simpleTypeP <*> varNameP
+paramP = (,) <$> simpleTypeP <*> nameP
bodyP :: [Typed VarName] -> Parser (Typed Expr)
bodyP params = declareVars params strongTermP