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. Indeed, it would be mistaken to deref a 
before you apply the function bound to b. 

;; --- 

If model allows a small language of expressions on the right-hand side, proceed 
as above but the specs should be clearer. 

-- Matthias


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to