<HTML><BODY>I didn't mean first-class. I did mean "only runtime".<br><br>In python it is hard to check (no macroses...). But in Common Lisp, top-level defclass is accessible during macro-expansion. <br><br>In Scala and Nemerel AFAIK classes also are accessible (with introspection) from macros body.<br><br>Thu, 3 Apr 2014 10:58:40 -0400 от Matthias Felleisen <matthias@ccs.neu.edu>:<br>
<blockquote style="margin: 10px; padding: 0px 0px 0px 10px; border-left-color: rgb(8, 87, 166); border-left-width: 1px; border-left-style: solid;">
        <div>
        



    









        
        


        
        
        
        
        

        
        

        
        



<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base href="https://e.mail.ru/" target="_self">
                
                        <div id="style_13965371120000001006_BODY"><br>
On Apr 3, 2014, at 9:12 AM, Roman Klochkov <<a href="/compose?To=kalimehtar@mail.ru">kalimehtar@mail.ru</a>> wrote:<br>
<br>
> > classes in Racket are themselves *runtime* values<br>
> <br>
> Thank you. Now I understand. I don't remember any language with classes, except Racket with such feature.<br>
<br>
It turns out almost all dynamically typed languages treat class in a first-class manner. Here is an example: <br>
<br>
class C1(object):<br>
  def __init__(self): pass<br>
  def m(self): return "c1"<br>
class C2(object):<br>
  def __init__(self): pass<br>
  def m(self): return "c2"<br>
# f is a mixin, result inherits from C<br>
def f(C):<br>
  class Sub(C):<br>
    def __init__(self): pass<br>
    def n(self): return self.m()<br>
  return Sub<br>
c1cls, c2cls = f(C1), f(C2)<br>
<br>
[due to Sam TH] -- Matthias<br>
<br>
<br>
<br>
[[ p.s. <br>
<br>
<br>
> Usually, either a class is a type, so it is defined in compile-time, or there no classes at all and objects just built on a prototype.<br>
<br>
Spiritually equating classes with types is a mistake. But yes many explicitly and statically typed languages do so. ]]<br>
<br>
</div>
                        
                
                <base href="https://e.mail.ru/" target="_self">
        </div>

        
</div>


</div>
</blockquote>
<br>
<br>-- <br>Roman Klochkov<br></BODY></HTML>