aboutsummaryrefslogtreecommitdiff
path: root/src/Language/SimpleShell/Parser/Function.hs
diff options
context:
space:
mode:
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