4.2 Avaliação Preguiçosa
Agora que temos um avaliador expresso como um programa JavaScript, podemos experimentar com escolhas alternativas em design de linguagem simplesmente modificando o avaliador. De fato, novas linguagens são frequentemente inventadas primeiro escrevendo um avaliador que incorpora a nova linguagem dentro de uma linguagem de alto nível existente. Por exemplo, se desejamos discutir algum aspecto de uma modificação proposta para JavaScript com outro membro da comunidade JavaScript, podemos fornecer um avaliador que incorpora a mudança. O destinatário pode então experimentar com o novo avaliador e enviar comentários como modificações adicionais. Não apenas a base de implementação de alto nível torna mais fácil testar e depurar o avaliador; além disso, a incorporação permite que o designer aproveite recursos da linguagem subjacente, assim como nosso avaliador JavaScript incorporado usa primitivos e estrutura de controle do JavaScript subjacente.1 Somente mais tarde (se é que alguma vez) o designer precisa se dar ao trabalho de construir uma implementação completa em uma linguagem de baixo nível ou em hardware. Nesta seção e na próxima, exploramos algumas variações em JavaScript que fornecem poder expressivo adicional significativo.