Volání funkcí je v prefixové notaci. V matematice používáme i postfixovou notaci a nepřipadá nám to divné. Lisp udělal jen to, že vše sjednotil do prefixové notace, aby to bylo jednodušší.
Jednodušší to je, ale pro počítač, nikoli pro člověka. Nemám problém s převody mezi jednotlivými formami zápisu, stejně jako nemám problém převádět mezi sebou arabská a římská čísla. Ale provádět aritmetické operace v římských číslech bych nedával.
A my si v lispu proste pouzijeme tu samou jako vzdycky pouzivame pro 2 nebo pro 3 "operandy" (divny tomu rikat operandy kdyz jsou to vlastne argumenty funkce)
Tak třeba pro mě to žádná extra-podivná věc nebyla, když jsem se učil LISP, protože po BASICu byl mým druhým jazykem Assembler, který je ve většině případů taky prefixový, a zhruba současně s Pascalem jsem se učil Forth - takže postfix. Ale znova - jedna věc je pouhý zápis, druhá věc je aktivní používání a myšlení. Že dokážu i docela složitý výpočet napsat v Assembleru ještě neznamená, že bych chtěl upravovat výrazy v intencích ADD, MUL, DIV...
Beru na vědomí.
A teď si vemte, že jsem se v té rovnici spletl. Protože jsem četl:
^ * + 5 2 - 6 3 2
jako (5 + 2) * (6 - (3 - 2)) ^ 2
A když jsem si tu chybu uvědomil, tak jsem zaujal postoj, že autor té prefixové rovnice to napsal blbě, protože samozřejmě očekávám, že operátor sežere všechny argumenty až po první operátor. Přišlo mi to jasné a pohodlné.
Co z toho vyvodíme?.
Že buď budeme důsledně používat závorky jako v LISPu, nebo operátory s konstantním počtem operandů jako ve Forthu.
