aboutsummaryrefslogtreecommitdiffstats
path: root/src/Builtins.hs
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2022-09-26 14:02:28 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2022-12-05 14:21:53 +0200
commit2ea2c405746bfa79d3be478f4c8763dd7dd6ac5f (patch)
tree39be22d6a3b768e42813e2e5dde4a37a301aafb3 /src/Builtins.hs
parent3f5b15b15fbca3dac18f3f5cb39b7826924ff175 (diff)
Add some concept docs
Diffstat (limited to 'src/Builtins.hs')
-rw-r--r--src/Builtins.hs22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/Builtins.hs b/src/Builtins.hs
index a4676b8..2eedbed 100644
--- a/src/Builtins.hs
+++ b/src/Builtins.hs
@@ -13,7 +13,9 @@ builtinEnv = M.fromList [
("/", builtinDivide2),
("head", builtinHead),
("tail", builtinTail),
- ("prepend", builtinPrepend)
+ ("prepend", builtinPrepend),
+ ("print!", builtinPrint),
+ ("string-concat", builtinStringConcat2)
]
-- maybe make a builtinBinaryFunction?
@@ -93,3 +95,21 @@ builtinPrepend =
return $ ASTVector $ ast1 : vec
return $ ASTFunction $ inner
in ASTFunction outer
+
+builtinPrint :: AST
+builtinPrint =
+ let outer _ ast =
+ do (ASTString str) <- assertIsASTString ast
+ liftIO $ putStr $ str
+ return ASTUnit
+ in ASTFunction outer
+
+builtinStringConcat2 :: AST
+builtinStringConcat2 =
+ let outer _ ast1 = do
+ (ASTString str1) <- assertIsASTString ast1
+ let inner _ ast2 = do
+ (ASTString str2) <- assertIsASTString ast2
+ return $ ASTString $ str1 ++ str2
+ return $ ASTFunction $ inner
+ in ASTFunction outer