Sobre o valor de primeira, segunda e terceira classe

Primeira classe valor pode ser

passado como argumentoretornado de uma sub-rotinaatribuído a uma variável.

Segunda classe O valor apenas pode ser passado como argumento.

Terceira classe o valor ainda não pode ser passado como argumento.

Por que essas coisas deveriam ser definidas assim? Pelo que entendi, "pode ser passado como argumento" significa que pode ser enviado para a pilha de tempo de execução; "pode ser atribuído a uma variável" significa que pode ser movido para um local diferente da memória; "pode ser retornado de uma sub-rotina" quase tem o mesmo significado de "pode ser atribuído a uma variável", pois o valor retornado sempre é colocado em um endereço conhecido; portanto, o valor de primeira classe é totalmente "móvel" ou "dinâmico", de segunda classe value é metade "móvel" e o valor de terceira classe é apenas "estático", como rótulos em C / C ++ que podem ser endereçados por uma instrução goto e você não pode fazer nada com esse endereço, exceto "goto". compreensão faz algum sentido? ou o que esses três tipos de valores significam exatamente?

questionAnswers(4)

yourAnswerToTheQuestion