Immutable definitions and documentation updates

This commit is contained in:
2025-01-24 16:14:33 -06:00
committed by James Eversole
parent 88b1c71695
commit 3175132eec
6 changed files with 137 additions and 32 deletions

View File

@ -11,8 +11,13 @@ import qualified Data.Set as Set
evalSingle :: Env -> TricuAST -> Env
evalSingle env term
| SFunc name [] body <- term =
let res = evalAST env body
in Map.insert "__result" res (Map.insert name res env)
if
| Map.member name env ->
errorWithoutStackTrace $
"Error: Identifier '" ++ name ++ "' is already defined."
| otherwise ->
let res = evalAST env body
in Map.insert "__result" res (Map.insert name res env)
| SApp func arg <- term =
let res = apply (evalAST env func) (evalAST env arg)
in Map.insert "__result" res env