aboutsummaryrefslogtreecommitdiffstats
path: root/src/Builtins.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Builtins.hs')
-rw-r--r--src/Builtins.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Builtins.hs b/src/Builtins.hs
index 71401d8..1c1dd1b 100644
--- a/src/Builtins.hs
+++ b/src/Builtins.hs
@@ -9,7 +9,8 @@ builtinEnv = M.fromList [
("+", builtinAdd2),
("-", builtinSubtract2),
("head", builtinHead),
- ("tail", builtinTail)
+ ("tail", builtinTail),
+ ("prepend", builtinPrepend)
]
builtinAdd2 :: AST
@@ -46,4 +47,13 @@ builtinTail =
(ASTVector vec) <- assertIsASTVector ast
when (length vec == 0) $ throwError $ LException $ "tail of empty vector"
return $ ASTVector $ tail vec
+ in ASTFunction outer
+
+builtinPrepend :: AST
+builtinPrepend =
+ let outer ast1 = do
+ let inner ast2 = do
+ (ASTVector vec) <- assertIsASTVector ast2
+ return $ ASTVector $ ast1 : vec
+ return $ ASTFunction $ inner
in ASTFunction outer \ No newline at end of file