Я читаю о LISP.
Я понимаю, как работает префиксная нотация на определенном уровне, но мне было интересно, есть ли какие-нибудь хитрости, чтобы сделать ее интуитивно понятной.
Я читаю о LISP.
Я понимаю, как работает префиксная нотация на определенном уровне, но мне было интересно, есть ли какие-нибудь хитрости, чтобы сделать ее интуитивно понятной.
Ответы:
Мысленно читайте его слева направо, так как разговорный язык с правильными глаголами может помочь. Например (+ 3 2) может быть «добавить три и два». В более общем случае вы можете сказать «выполнить операцию $ над $ операндами». Применительно к тому же случаю: «Выполнить операцию добавления на три и два».
( = 1 2 )
и( > 4 2 )
Трюки? Зачем?
Это пока не кажется вам интуитивным, потому что ваш ментальный парсер к этому не привык. Будет лучше, если вы просто будете использовать его и читать его снова и снова.
Вы можете думать об этом как о вызове функции:
(operator operand1 operand2 ...)
В этом нет ничего особенного. Если вы перегружаете операторы в C ++ (и многих других языках, которые позволяют это), вам часто приходится определять функции такого типа именно так:
MyClass operator+(MyClass const& x, MyClass const& y);
Многие языки используют сочетание префикса, инфикса и даже постфикса.
Лисп просто использует только префикс - по умолчанию. Если грех (х) интуитивно понятен из математики, то (грех х) не далеко. Если перемещение (собака, дом) - это традиционный вызов процедуры, то в Лиспе это просто (перемещение собаки домой).
Лисп не делает никаких исключений для математики и рассматривает +, -, * и другие как обычные вызовы функций.