-----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----- ____________________ Racket Users list: http://lists.racket-lang.org/users