title: Is there a programming language that meets these requirements?
body: <p>I have a few requirements before implementing my next program - hopefully a programming language exists that can do the following:</p>
  
  <ol>
  <li>Given a class (or interface) C, the programming language allows the user access to a list of all classes which extend/implement C.</li>
  <li>The programming language allows the user to iterate through all the variables and methods of a class.</li>
  <li><p>The user is able to determine the number and types of arguments a function will take.</p>
  
  <pre><code>eg. foo(int a, String b, int c) can be queried 
  to return 3 or [int, String, int]
  </code></pre></li>
  </ol>
  
  <p>Are these absurd requirements or does some language implement them as basic techniques of reflection?</p>