From 5fbc3900d20c41f0104bc6f29ea8ca1b16fc4172 Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Sun, 21 Nov 2010 20:34:43 -0500 Subject: [PATCH] week9 tweak Signed-off-by: Jim Pryor --- week9.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week9.mdwn b/week9.mdwn index c01890e4..0f108e83 100644 --- a/week9.mdwn +++ b/week9.mdwn @@ -578,7 +578,7 @@ Programming languages tend to provide a bunch of mutation-related capabilities a * One increment would be to add aliasing or passing by reference, as illustrated above. In the illustration, we relied on the combination of passing by reference and mutation to demonstrate how you could get different behavior depending on whether an argument was passed to a function by reference or instead passed in the more familiar way (called "passing by value"). However, it would be possible to have passing by reference in a language without having mutation. For it to make any difference whether an argument is passed by reference or by value, such a language would have to have some primitive predicates which are sensitive to whether their arguments are aliased or not. In Jim's paper linked above, he calls such predicates "hyper-evaluative." - The simplest such predicate we might call "hyperequals": `y hyperequals w` should evaluate to true only when the arguments `y` and `w` are aliased. + The simplest such predicate we might call "hyperequals": `y hyperequals w` should evaluate to true when and only when the arguments `y` and `w` are aliased. * Another increment would be to add implicit-style mutable variables, as we explained above. You could do this with or without also adding passing-by-reference. -- 2.11.0