About first-,second- and third-class value
        Posted  
        
            by forest58
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by forest58
        
        
        
        Published on 2010-04-05T14:29:49Z
        Indexed on 
            2010/04/05
            14:33 UTC
        
        
        Read the original article
        Hit count: 224
        
programming-languages
First-class value can be
- passed as an argument
- returned from a subroutine
- assigned into a variable.
Second-class value just can be passed as an argument.
Third-class value even can't be passed as an argument.
Why should these things defined like that? As I understand, "can be passed as an argument" means it can be pushed into the runtime stack;"can be assigned into a variable" means it can be moved into a different location of the memory; "can be returned from a subroutine" almost has the same meaning of "can be assigned into a variable" since the returned value always be put into a known address, so first class value is totally "movable" or "dynamic",second class value is half "movable" , and third class value is just "static", such as labels in C/C++ which just can be addressed by goto statement, and you can't do nothing with that address except "goto" .Does My understanding make any sense? or what do these three kinds of values mean exactly?
© Stack Overflow or respective owner