Hacker News new | ask | show | jobs
by bjourne 3452 days ago
I like Factors (http://factorcode.org/) approach to classes. In that language, a class is a category and not a "mold" from which objects are created. E.g, I can say the following:

    33 number?
    t
    33 integer?
    t
    integer number class<=
    t
    number object class<=
    t
The last two lines demonstrates a little of the class algebra possible. It says that if an object is an instance of the integer class, then it also an instance of the number class and of the object class. That is, the set of objects that are integers is a subset of the set of objects that are numbers which is a subset of all objects.

I can add new classes which refines categories of existing objects:

    PREDICATE: positive < number 0 > ;
    PREDICATE: prime-number < integer prime? ;
    17 positive?
    t
    17 prime-number?
    t
    13.4 positive?
    t
    
Note that both real and integer values can be "positive" which means that "positive" isn't a strict subset of either class. That kind of refinement isn't possible in most oo languages.