Zum Vergleich: Introspektion in Haskell

data Rose a = 
     Rose { key :: a
          , children :: [ Rose a ]
          }
     deriving ( Typeable, Data )
*Main> dataTypeOf $ make 2
DataType {tycon = "Main.Rose", datarep = AlgRep [Rose]}
*Main> dataTypeConstrs $ dataTypeOf $ make 2
[Rose]
*Main> map constrFields $ dataTypeConstrs $ dataTypeOf $ make 2
[["key","children"]]



Johannes Waldmann 2006-02-02