diff options
| author | Jan Tuomi <jan.tuomi@valuemotive.com> | 2022-09-24 15:59:16 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-05 14:21:53 +0200 |
| commit | 70468c0217e70858bfa037ad81ce8caf1b582ec2 (patch) | |
| tree | d2f4a948b59e5236f59d5c480d1bf2db07ae2b76 /src/Builtins.hs | |
| parent | aec05f8d92a608f0fb34fd2453a647b43dcb777d (diff) | |
Implement let
Diffstat (limited to 'src/Builtins.hs')
| -rw-r--r-- | src/Builtins.hs | 12 |
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 |
