Thanks for the reply Jarkko. That helps quite a lot. I have some hacks
in place that works most of the time, but was stuck trying to figure
out a general solution. Knowing that there isn't one puts my mind at
ease.
  -Patrick

On Aug 9, 1:56 pm, Jarkko Oranen <chous...@gmail.com> wrote:
> On Aug 9, 7:54 pm, CuppoJava <patrickli_2...@hotmail.com> wrote:
>
> > Hello everyone,
> > Just for educational purposes, I'm writing a simple lisp compiler and
> > am stuck on a small problem.
>
> > I'm trying to write a function called (compile-function), which will
> > take a function as input and compile it.
>
> > If that function calls other functions, I would like (compile-
> > function) to automatically compile the called functions as well.
>
> > But I'm stuck on how to tell whether a function will be called or not.
> > Particularly when functions are passed around as objects.
>
> > So the question is this: Given a function f, how can I find all the
> > functions that f depends on?
>
> I don't think that's feasible, if it's even possible in the first
> place.
>
> Functions that the parent function calls directly you can of course
> try to compile whatever you encounter in a function call form; just
> check if the operator is a known global function, and compile it.
> However, if the operator is a local variable (ie. a function passed as
> a parameter) there's no reliable way to find out what function it is.
> It might even be a runtime-generated function (by eval)
>
> Since you can't know what functions will be called, the generated code
> must somehow verify that it's calling a function in the first place,
> perhaps invoke the compiler (if all functions must be compiled), and
> then execute it.
>
> --
> Jarkko

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to