Neil, Thanks very much for the detailed response. When we did Rosette, a reflective actor-based language, back in the late '80's and early '90's, we were very much influenced by Brian Cantwell Smith's account of reflection in 3-Lisp and similarly by Friedman and Wand's "Mystery of the Tower Revealed". Our analysis suggested the following breakdown
- Structural reflection -- all data used in the evaluation of programs has a programmatic representation - Procedural reflection -- all execution machinery used in the evaluation of programs has a programmatic representation The Java notion of reflection is restricted entirely to the first case and then only to the data used once a normalized representation has been achieved. In fact, lexing and parsing are of considerable interest and complexity in the evaluation of programs and reflective access is extremely useful. Likewise, access to the evaluation machinery itself is of more than theoretical interest. For example, in an ATM network management system i wrote in Rosette, i used reflective methods -- where the evaluation itself could be captured, stored and manipulated, much like a 1-shot continuation -- to make a polling interface of an external trouble-ticketing system we were required by business constraints to interface with look like an interrupt-driven interface to the Rosette-based clients. Best wishes, --greg On 9/11/07, Neil Mitchell <[EMAIL PROTECTED]> wrote: > > Hi > > > there is no runtime representation of type available for programmatic > > representation > > Data.Typeable.typeOf :: Typeable a => a -> TypeRep > > > there is no runtime representation of the type-inferencing or checking > > machinery > > Pretty much, no. The GHC API may provide some. > > > there is no runtime representation of the evaluation machinery > > Yhc provides some representation with the Yhc API. > > > there is no runtime representation of the lexical or parsing machinery > > lex provides some of this. There are various Haskell parsers out there > in packages for us. > > > I wouldn't have considered these things "reflection" - certainly the > Java/C# use of the word reflection is quite different. Data.Generics > does provide many of the reflection capabilities of Java. > > Thanks > > Neil > -- L.G. Meredith Managing Partner Biosimilarity LLC 505 N 72nd St Seattle, WA 98103 +1 206.650.3740 http://biosimilarity.blogspot.com
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe