On 09/07/2014 9:36 PM, Jonathan S. Shapiro wrote:
> 1. Out-of-program reflection, e.g. by a debugger. This is a case where 
> it may make sense not to honor encapsulation boundaries, though that 
> actually depends on the security model.

Debugging is beyond the reflection capabilities of Java/C#.I think 
something like Lisp's reflective towers are the only reflective 
facilities powerful enough for this sort of introspection.

> What kinds of things are missing as first-class concepts that would 
> help make reflection less necessary?

First-class labels [1] + an injection/projection pair: label kind 
<=>serializable token, like a string. First-class labels are based on 
extensible records, so you can reduce and build records element-wise.

First-class constructors and an injection/project pair: constructor <=> 
serializable token, like a string. Haskell's data constructors are 
first-class values, but they reify as functions. The 
injection/projection pair would then be a partial function since it 
can't return a token for a closure.

You could make it total again if BitC distinguishes function pointers 
from closures.Closures then break into a function pointer and an 
existential.

Sandro

[1] http://lambda-the-ultimate.org/node/174


_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to