Ross Paterson <[EMAIL PROTECTED]> writes:
> there's an unsafe use in evalName(), 

I think this is easily fixed by using malloc to allocate the buffer
and then tracking down all uses and calling free.

> and I don't understand the mutual recursion between eval() and run().

Not sure what you don't understand here so let me sketch my understanding:

  eval traverses the graph looking for the next redex and then calling 
  an appropriate C function to apply the reduction.  One of these
  reducers is the bytecode evaluator 'run'.

  run evaluates bytecode which both constructs fresh bits of graph and
  implements the evaluate/test part of case expressions.  When
  evaluating case expressions, it has to trigger evaluation of the 
  selector which it does by calling 'eval'.

Without studying the code in detail, I believe that this recursion is
safe because run is a critical part of non-monadic evaluation - if
there were problems here, we'd have found them a long time ago.  Of
course, this naive belief might be shattered if I were to actually
look at the code in detail.

--
Alastair

_______________________________________________
FFI mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/ffi

Reply via email to