[racket] filtering syntax
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 13-01-12 15:23, Matthias Felleisen wrote:
>
> On Jan 13, 2012, at 8:40 AM, Marijn wrote:
>
>> My question is how one determines the dependencies from the above
>> code. The result for the above would be something like:
>>
>> ((a) (b a) (c a b) (d c))
>
>
> If model allows arbitrary Racket code on the right-hand side, you
> locally expand them into core, compute the free variables with a
> simple recursive pass over core syntax, and compute dependencies
> from there. The latter is approximate, however. If you allow
>
> (model ([a] [b (lambda () a)] [c (+ a 2)]))
>
> b is much less dependent on a than c.
Right, b would be a constant, namely the function that returns the
value of a.
> Indeed, it would be mistaken to deref a before you apply the
> function bound to b.
I don't understand this. I would say that if you deref a before
setting it you would get an implementation-defined value (or an
error). Same if the first thing you do is apply the function bound to
b, since it just retrieves a's current value. What am I missing?
Marijn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk8QS7cACgkQp/VmCx0OL2x38gCeNHNCwsrOK44LRzf0JO3fwFAd
jHsAn2uoj5IuR1B6jgfhCo7WXEbz8EJQ
=t35b
-----END PGP SIGNATURE-----