Estou lendo sobre o LISP.
Entendo como a notação de prefixo funciona em um determinado nível, mas fiquei pensando se há algum truque para torná-la intuitiva.
Estou lendo sobre o LISP.
Entendo como a notação de prefixo funciona em um determinado nível, mas fiquei pensando se há algum truque para torná-la intuitiva.
Respostas:
A leitura mental da esquerda para a direita, como a linguagem falada com os verbos adequados, pode ajudar. Por exemplo (+ 3 2) pode ser "adicione três e dois". No caso mais geral, você pode dizer "executar $ operação em $ operandos". Aplicado ao mesmo caso: "Execute a operação de adição nos três e nos dois".
( = 1 2 )
e( > 4 2 )
Truques? Pelo que?
Ainda não parece intuitivo para você porque seu analisador mental não está acostumado a isso. Vai ficar melhor se você apenas usá-lo e lê-lo repetidamente.
Você pode pensar nisso como um tipo de chamada de função:
(operator operand1 operand2 ...)
Não há nada de muito especial nisso. Se você sobrecarregar os operadores em C ++ (e em muitas outras linguagens que o permitem), geralmente precisará definir esse tipo de função exatamente dessa maneira:
MyClass operator+(MyClass const& x, MyClass const& y);
Muitos idiomas usam uma mistura de prefixo, infixo e até postfix.
Lisp apenas usa apenas prefixo - por padrão. Se o pecado (x) é intuitivo em relação à matemática, então (pecado x) não está longe. Se mover (cachorro, casa) é uma chamada de procedimento tradicional, então no Lisp é apenas (mover cachorro para casa).
O Lisp não abre nenhuma exceção para matemática e trata +, -, * e outros, como chamadas de funções comuns.