Я читаю про LISP.
Я розумію, як нотація префікса працює на певному рівні, але мені було цікаво, чи є хитрощі, щоб зробити його інтуїтивно зрозумілим.
Я читаю про LISP.
Я розумію, як нотація префікса працює на певному рівні, але мені було цікаво, чи є хитрощі, щоб зробити його інтуїтивно зрозумілим.
Відповіді:
Подумки читання його зліва направо, оскільки розмовна мова з належними дієсловами може допомогти. Наприклад (+ 3 2) може бути "додати три і два". У більш загальному випадку можна сказати "виконувати $ операцію на $ операндах". Застосовується до того ж випадку: "Виконайте операцію додавання на три та дві".
( = 1 2 )
і( > 4 2 )
Витівки? Для чого?
Це не відчуває для вас інтуїтивно зрозуміло, тому що ваш розумовий аналізатор до цього не звик. Це стане краще, якщо ви просто використовуєте його і читатимете його знову і знову.
Ви можете подумати про це як про якийсь виклик функції:
(operator operand1 operand2 ...)
У цьому немає нічого особливого. Якщо ви перевантажуєте операторів на C ++ (та багатьох інших мовах, які це дозволяють), вам часто доводиться визначати такий тип функції саме таким чином:
MyClass operator+(MyClass const& x, MyClass const& y);
Багато мов використовують суміш префікса, інфіксації та навіть постфікса.
Lisp просто використовує лише префікс - за замовчуванням. Якщо sin (x) інтуїтивно зрозумілий з математики, то (sin x) не за горами. Якщо переїзд (собака, додому) - це традиційний виклик процедури, то в Ліспі це просто (переміщення собаки додому).
Lisp не робить жодного винятку для математики та лікує +, -, * та інші, як звичайні виклики функцій.