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
