Недавно я был в #lisp на freenode, и кто-то упомянул о существовании '1-' and 1+
. Зная об этих функциях, мне стало интересно, почему они существуют. Были ли они созданы из-за таких причин, как связанные --
и ++
из C/C++, или была ли какая-то другая причина? Кто-нибудь знает историю того, как эти функции стали стандартными?История 1- и 1+
(Если этот вопрос является более подходящим для другого сайта (например, Программисты), пожалуйста, перенести его там. Спасибо.)
1+ и 1- это просто удобные функции. Они были навсегда в Лиспе. В ранние времена их называли ADD1 и SUB1. –
Это всего лишь предположение, но, возможно, это было связано с производительностью, поэтому я говорю, что это мой опыт рассмотрения реализаций «+» и «1+ в emacs lisp», + и других математических операторов, реализованных в более медленный общий способ, который включает в себя еще несколько проверок и вызовов функций, тогда как «1+» и «1-» реализованы по-разному, и они на самом деле довольно быстро. в emacs lisp (+ 1 1) делает совсем другие вещи, чем (1+ 1). Фактически в моих тестах (1+ 1) работало на 40% быстрее, чем (+ 1 1). Я не знаю, как это делают популярные реализации CL, но, возможно, это похоже. –