Skip to content

Commit 36afc01

Browse files
committed
lis.py: removed 'global_env' as default for 'evaluate(x, env)'
1 parent 2338cb9 commit 36afc01

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

18-context-mngr/lispy/py3.10/lis.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def lispstr(exp: object) -> str:
139139
################ eval
140140

141141

142-
def evaluate(x: Expression, env: Environment = global_env) -> Any:
142+
def evaluate(x: Expression, env: Environment) -> Any:
143143
"Evaluate an expression in an environment."
144144
match x:
145145
case str(): # variable reference

18-context-mngr/lispy/py3.10/lis_test.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
from lis import parse, evaluate, Expression, Environment, standard_env
66

7+
# Norvig's tests are not isolated: they assume the
8+
# same environment from first to last test.
9+
ENV_FOR_FIRST_TEST = standard_env()
710

811
@mark.parametrize( 'source, expected', [
912
("(quote (testing 1 (2.0) -3.14e159))", ['testing', 1, [2.0], -3.14e159]),
@@ -40,7 +43,7 @@
4043
("(riff-shuffle (riff-shuffle (riff-shuffle (list 1 2 3 4 5 6 7 8))))", [1,2,3,4,5,6,7,8]),
4144
])
4245
def test_evaluate(source: str, expected: Optional[Expression]) -> None:
43-
got = evaluate(parse(source))
46+
got = evaluate(parse(source), ENV_FOR_FIRST_TEST)
4447
assert got == expected
4548

4649

@@ -58,31 +61,31 @@ def test_evaluate_variable() -> None:
5861
assert got == expected
5962

6063

61-
def test_evaluate_literal() -> None:
64+
def test_evaluate_literal(std_env: Environment) -> None:
6265
source = '3.3'
6366
expected = 3.3
64-
got = evaluate(parse(source))
67+
got = evaluate(parse(source), std_env)
6568
assert got == expected
6669

6770

68-
def test_evaluate_quote() -> None:
71+
def test_evaluate_quote(std_env: Environment) -> None:
6972
source = '(quote (1.1 is not 1))'
7073
expected = [1.1, 'is', 'not', 1]
71-
got = evaluate(parse(source))
74+
got = evaluate(parse(source), std_env)
7275
assert got == expected
7376

7477

75-
def test_evaluate_if_true() -> None:
78+
def test_evaluate_if_true(std_env: Environment) -> None:
7679
source = '(if 1 10 no-such-thing)'
7780
expected = 10
78-
got = evaluate(parse(source))
81+
got = evaluate(parse(source), std_env)
7982
assert got == expected
8083

8184

82-
def test_evaluate_if_false() -> None:
85+
def test_evaluate_if_false(std_env: Environment) -> None:
8386
source = '(if 0 no-such-thing 20)'
8487
expected = 20
85-
got = evaluate(parse(source))
88+
got = evaluate(parse(source), std_env)
8689
assert got == expected
8790

8891

18-context-mngr/lispy/py3.9/lis.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def lispstr(exp: object) -> str:
138138
################ eval
139139

140140

141-
def evaluate(x: Expression, env: Environment = global_env) -> Any:
141+
def evaluate(x: Expression, env: Environment) -> Any:
142142
"Evaluate an expression in an environment."
143143
if isinstance(x, str): # variable reference
144144
return env[x]

18-context-mngr/lispy/py3.9/lis_test.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
from lis import parse, evaluate, Expression, Environment, standard_env
66

7+
# Norvig's tests are not isolated: they assume the
8+
# same environment from first to last test.
9+
ENV_FOR_FIRST_TEST = standard_env()
710

811
@mark.parametrize( 'source, expected', [
912
("(quote (testing 1 (2.0) -3.14e159))", ['testing', 1, [2.0], -3.14e159]),
@@ -40,7 +43,7 @@
4043
("(riff-shuffle (riff-shuffle (riff-shuffle (list 1 2 3 4 5 6 7 8))))", [1,2,3,4,5,6,7,8]),
4144
])
4245
def test_evaluate(source: str, expected: Optional[Expression]) -> None:
43-
got = evaluate(parse(source))
46+
got = evaluate(parse(source), ENV_FOR_FIRST_TEST)
4447
assert got == expected
4548

4649

@@ -58,31 +61,31 @@ def test_evaluate_variable() -> None:
5861
assert got == expected
5962

6063

61-
def test_evaluate_literal() -> None:
64+
def test_evaluate_literal(std_env: Environment) -> None:
6265
source = '3.3'
6366
expected = 3.3
64-
got = evaluate(parse(source))
67+
got = evaluate(parse(source), std_env)
6568
assert got == expected
6669

6770

68-
def test_evaluate_quote() -> None:
71+
def test_evaluate_quote(std_env: Environment) -> None:
6972
source = '(quote (1.1 is not 1))'
7073
expected = [1.1, 'is', 'not', 1]
71-
got = evaluate(parse(source))
74+
got = evaluate(parse(source), std_env)
7275
assert got == expected
7376

7477

75-
def test_evaluate_if_true() -> None:
78+
def test_evaluate_if_true(std_env: Environment) -> None:
7679
source = '(if 1 10 no-such-thing)'
7780
expected = 10
78-
got = evaluate(parse(source))
81+
got = evaluate(parse(source), std_env)
7982
assert got == expected
8083

8184

82-
def test_evaluate_if_false() -> None:
85+
def test_evaluate_if_false(std_env: Environment) -> None:
8386
source = '(if 0 no-such-thing 20)'
8487
expected = 20
85-
got = evaluate(parse(source))
88+
got = evaluate(parse(source), std_env)
8689
assert got == expected
8790

8891

0 commit comments

Comments
 (0)